<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	    <channel>
        <title>Prosys Forum - Forum: OPC UA SDK for Java</title>
        <link>https://forum.prosysopc.com/forum/opc-ua-java-sdk/</link>
        <description><![CDATA[Prosys OPC &#038; OPC UA related discussion]]></description>
        <generator>Simple:Press Version 6.11.11</generator>
        <atom:link href="https://forum.prosysopc.com/forum/opc-ua-java-sdk/rss/" rel="self" type="application/rss+xml"/>
		                <item>
                    <title>rocket science on Subscription Transfer with KEP Server EX</title>
                    <link>https://forum.prosysopc.com/forum/opc-ua-java-sdk/subscription-transfer-with-kep-server-ex/#p7524</link>
                    <category>OPC UA SDK for Java</category>
                    <guid isPermaLink="true">https://forum.prosysopc.com/forum/opc-ua-java-sdk/subscription-transfer-with-kep-server-ex/#p7524</guid>
					                        <description><![CDATA[<blockquote class="spPostEmbedQuote">
<p><strong>Bjarne Boström said </strong><br />
Are you absolutely sure that the server did crash?
</p>
</blockquote>
<p>Not 100% sure. I just assumed this from the logs because of:</p>
<p>2026-04-10 01:17:48,349 onStatusChange: status=null statusCode=Bad_Timeout (0x800A0000) “The operation timed out.”</p>
<p>and the fact that read operations did no more work beginning at this time.</p>
<p>2026-04-10 01:18:09,524&#124;SecureChannelTcp&#124;DEBUG&#124;Response: ReadResponse<br />
2026-04-10 01:18:10,111&#124;AsyncResultImpl&#124;DEBUG&#124;error:<br />
...<br />
Caused by: com.prosysopc.ua.ServiceException: Bad_Timeout (code=0x800A0000, description="The operation timed out.")</p>
<p>So I assumed the server was restartet at ~ 02:08 when the client got connection again - but I have to re-check if this was the case or the server was basically still running somehow.</p>
<blockquote class="spPostEmbedQuote">
<p><strong>Bjarne Boström said </strong><br />
CreateSubscrpitionResponse shows that the server created Subscription with id 45. Now depending how the server chooses them (they need to be unique for the server), it is possible by luck it was 45.<br />
Or if other clients (if any) also connected it might not have been the initial one. Or in theory might be some weird result of TransferSubscription using that id (it would have been e.g. the highest)??
</p>
</blockquote>
<p>Yeah, this is somehow strange.</p>
<blockquote class="spPostEmbedQuote">
<p><strong>Bjarne Boström said </strong><br />
Does more than one client connect to the server? Do you (+they) use Anonymous user access?<br />
- Asking because most ids are +2, but 45 was 44+1, typically these are +1 for the previous one.
</p>
</blockquote>
<p>Yes, there are 2 clients connected to this server. The other client has also 6 subscription and had basically the same problem at the same time (but I have to check the logs for the other in detail)<br />
Both clients use Anonymous access.</p>
<p>2026-04-10 02:08:35,191&#124;UaClient&#124;DEBUG&#124;MessageSecurityMode: None, SecurityPolicy: <a href="http://opcfoundation.org/UA/SecurityPolicy#None" rel="nofollow" target="_blank"><a href="http://opcfoundation.org/UA/Se" rel="nofollow">http://opcfoundation.org/UA/Se</a>.....olicy#None</a>, UserIdentity type: Anonymous<br />
2026-04-10 02:08:35,191&#124;UaClient&#124;DEBUG&#124;SecurityMode NONE and UserTokenType Anonymous, skipping nonce checks<br />
2026-04-10 02:08:35,191&#124;UaClient&#124;DEBUG&#124;activateSessionChannel: endpoint=opc.tcp:XXX:YYY<br />
2026-04-10 02:08:35,191&#124;UaClient&#124;DEBUG&#124;UserToken encryption algorithm: null</p>
<blockquote class="spPostEmbedQuote">
<p><strong>Bjarne Boström said </strong><br />
There are some oddities. If the server crashed, it would be extremely unlikely that it would have any knowledge of Subscriptions prior to the crash, though not impossible<br />
(but I'm not aware of such implementation; plus the UA Spec Durable Subscriptions would need to be enabled by the client, which we do not do). So, any TransferSubscriptions call should thus fail.</p>
<p>Now then, IF other clients would be connecting to the same server, then there are some scenarios where depending on the implementation and other stuff it might be possible<br />
to Transfersubscription another clients Subscription, which in this case would be something they just have made. Though this should only happen for Anonymous Sessions, if for any.</p>
<p>The timeout and lifetimeout do depend on delta to Subscription.getLastAlive() (vs. publishinterval and respective keepalive/lifetime), which is updated if anything is done, e.g.<br />
server sends keepalive or data for the Subscription (or if data is received that indicates an update was missed and is being RePublished).</p>
<p>Note that UaClient will keep sending PublishRequests as long as it has Subscription.isAlive() subscriptions and PublishRequests are not keyed to any subscription.
</p>
</blockquote>
<p>You're right, if the server would have crashed completly it would have started by SuscriptionId 1 (at least I would have expected this)</p>
<p>I will check tomorrow what happened to the other client at the same time, and take a look at the SubscriptionId's there.</p>
<blockquote class="spPostEmbedQuote">
<p><strong>Bjarne Boström said </strong><br />
Does the "Server sent a previously acknowledged sequence number" numbers keep rising or stay 1? Though you showed one line that has also 2 for id 36.</p>
<p>Maybe the TransferSubscriptions somehow resulted in the server making some subscription objects that do nothing, but send keepalives. Or maybe they do send data,<br />
but they started as-if they were new ones, so the sequence number is wrong (and thus you see those logs for very long while until they catch up the number the server send prev to the crash). 
</p>
</blockquote>
<p>Yes, thats also somehow weird here, some numbers are increasing from time to time, but some stay on 2.<br />
E.g. Subscription 36 stays on 2<br />
and Subscription 38 stays on 97 some time but increases later to 98 followed to increase to 99</p>
<p>Here are some logs a few hours later:</p>
<p>2026-04-10 10:28:58,538&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 97 for Subscription 38<br />
2026-04-10 10:29:03,548&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 2 for Subscription 36<br />
2026-04-10 10:29:03,548&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 54 for Subscription 40<br />
2026-04-10 10:29:03,548&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 2 for Subscription 42<br />
2026-04-10 10:29:03,548&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 2 for Subscription 44<br />
2026-04-10 10:29:18,541&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 97 for Subscription 38<br />
2026-04-10 10:29:23,548&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 2 for Subscription 36<br />
2026-04-10 10:29:23,548&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 54 for Subscription 40<br />
2026-04-10 10:29:23,548&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 2 for Subscription 42<br />
2026-04-10 10:29:23,548&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 2 for Subscription 44<br />
2026-04-10 10:29:38,545&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 97 for Subscription 38<br />
2026-04-10 10:29:43,553&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 2 for Subscription 36<br />
2026-04-10 10:29:43,553&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 54 for Subscription 40<br />
2026-04-10 10:29:43,553&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 2 for Subscription 42<br />
2026-04-10 10:29:43,553&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 2 for Subscription 44<br />
2026-04-10 10:29:58,534&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 97 for Subscription 38<br />
...<br />
2026-04-10 10:36:33,524&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 97 for Subscription 38<br />
2026-04-10 10:36:38,531&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 98 for Subscription 38<br />
2026-04-10 10:36:43,538&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 2 for Subscription 36<br />
2026-04-10 10:36:43,538&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 54 for Subscription 40<br />
2026-04-10 10:36:43,538&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 2 for Subscription 42<br />
2026-04-10 10:36:43,538&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 2 for Subscription 44<br />
2026-04-10 10:36:56,522&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 99 for Subscription 38<br />
2026-04-10 10:37:03,533&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 2 for Subscription 36<br />
2026-04-10 10:37:03,533&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 54 for Subscription 40<br />
2026-04-10 10:37:03,533&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 2 for Subscription 42<br />
2026-04-10 10:37:03,533&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 2 for Subscription 44</p>
]]></description>
					                    <pubDate>Tue, 14 Apr 2026 01:22:05 +0300</pubDate>
                </item>
				                <item>
                    <title>Bjarne Boström on Bad_DecodingError (0x80070000) "Decoding halted because of invalid data in the stream."</title>
                    <link>https://forum.prosysopc.com/forum/opc-ua-java-sdk/bad_decodingerror-0x80070000-decoding-halted-because-of-invalid-data-in-the-stream/#p7523</link>
                    <category>OPC UA SDK for Java</category>
                    <guid isPermaLink="true">https://forum.prosysopc.com/forum/opc-ua-java-sdk/bad_decodingerror-0x80070000-decoding-halted-because-of-invalid-data-in-the-stream/#p7523</guid>
					                        <description><![CDATA[<p>First a note that this topic is somewhat complicated. Also, this answer is based on the 5.x. Though, it is mostly the same in 4.x. </p>
<p>When dealing with Structures for which you do not know the exact type in code, it is best to treat them as the raw 'Structure' interface. It does have methods for getting and setting fields in a generic way, see <a href="https://documentation.prosysopc.com/JSDK/javadoc/com/prosysopc/ua/stack/builtintypes/Structure.html" rel="nofollow" target="_blank"><a href="https://documentation.prosysop" rel="nofollow">https://documentation.prosysop</a>.....cture.html</a>. Alternatively for known types for which you do have an information model NodeSet XML file, you could use the included Codegen tool to create java classes that represent the Structures.</p>
<p>The SDK has special metadata classes StructureSpecification and FieldSpecification that model the Structure types that they can be handled in a generic way. Nowadays, you could mostly think them as "better versions" of StructureDefinition and FieldDefinition from the DataTypeDefinition Attribute, though StructureSpecification and FieldSpecification do pre-date them. Basically they were first used with what we now call legacy DataTypeDictionaries (the server has a node that has a big XML document). Now depending what the server supports we either use the DataTypeDefinition Attribute or the legacy dictionaries (or both), but the "SDK user API" is still the same with StructureSpecification and FieldSpecification regardless of which one was used. </p>
<p>See<br />
<a href="https://documentation.prosysopc.com/JSDK/javadoc/com/prosysopc/ua/typedictionary/StructureSpecification.html" rel="nofollow" target="_blank"><a href="https://documentation.prosysop" rel="nofollow">https://documentation.prosysop</a>.....ation.html</a><br />
<a href="https://documentation.prosysopc.com/JSDK/javadoc/com/prosysopc/ua/typedictionary/FieldSpecification.html" rel="nofollow" target="_blank"><a href="https://documentation.prosysop" rel="nofollow">https://documentation.prosysop</a>.....ation.html</a><br />
you can use com.prosysopc.ua.stack.builtintypes.Structure.specification() to get the StructureSpecification and then getFields on that to get FieldSpecification, one per each field, these tell e.g. the field name and datatype which helps when using e.g. com.prosysopc.ua.stack.builtintypes.Structure.set(String, Object).</p>
<p>If you do not have any Structure instance to .specification(), you can use com.prosysopc.ua.client.UaClient.getEncoderContext()+ com.prosysopc.ua.stack.encoding.EncoderContext.getStructureSpecification(UaNodeId) to get the StructureSpecification of that type, then com.prosysopc.ua.typedictionary.StructureSpecification.toInstanceBuilder() will give a Structure.Builder that can be used to build the Structure instances of that type.</p>
<p>In 5.x the concept was generalized in a way all datatypes, in 4.x it is mostly just Structures and Enumerations (<a href="https://downloads.prosysopc.com/opcua/Prosys_OPC_UA_SDK_for_Java_5_Release_Notes.html#version-5-0-0" rel="nofollow" target="_blank"><a href="https://downloads.prosysopc.co" rel="nofollow">https://downloads.prosysopc.co</a>.....sion-5-0-0</a>)</p>
<p>We should probably improve the documentation at some point, maybe the best existing example is in the SampleConsoleServer example com.prosysopc.ua.samples.server.MyNodeManager.createCustomStructure(), <a href="https://documentation.prosysopc.com/JSDK/samples/sampleconsoleserver/src-html/com/prosysopc/ua/samples/server/MyNodeManager.html#line.415" rel="nofollow" target="_blank"><a href="https://documentation.prosysop" rel="nofollow">https://documentation.prosysop</a>.....l#line.415</a>. Though start around <a href="https://documentation.prosysopc.com/JSDK/samples/sampleconsoleserver/src-html/com/prosysopc/ua/samples/server/MyNodeManager.html#line.467" rel="nofollow" target="_blank"><a href="https://documentation.prosysop" rel="nofollow">https://documentation.prosysop</a>.....l#line.467</a> as the start of the method is creating the type itself.</p>
]]></description>
					                    <pubDate>Mon, 13 Apr 2026 20:38:02 +0300</pubDate>
                </item>
				                <item>
                    <title>Bjarne Boström on Subscription Transfer with KEP Server EX</title>
                    <link>https://forum.prosysopc.com/forum/opc-ua-java-sdk/subscription-transfer-with-kep-server-ex/#p7522</link>
                    <category>OPC UA SDK for Java</category>
                    <guid isPermaLink="true">https://forum.prosysopc.com/forum/opc-ua-java-sdk/subscription-transfer-with-kep-server-ex/#p7522</guid>
					                        <description><![CDATA[<p>Hi,</p>
<p>Most likely you would need to contact the server vendor. But to theoretize something...</p>
<p>Are you absolutely sure that the server did crash?</p>
<p>For the one Subscription that did fail the TransferSubscription, the id was 45. This is a server-given id. The "createSubscription: subscription=" lines show other numbers than 45. A failed TransferSubscription does reset the number in our client side i.e. it becomes 0; which is otherwise invalid id, this is seen in the createSubscription. However, then the CreateSubscrpitionResponse shows that the server created Subscription with id 45. Now depending how the server chooses them (they need to be unique for the server), it is possible by luck it was 45. Or if other clients (if any) also connected it might not have been the initial one. Or in theory might be some weird result of TransferSubscription using that id (it would have been e.g. the highest)??</p>
<p>Does more than one client connect to the server? Do you (+they) use Anonymous user access?<br />
- Asking because most ids are +2, but 45 was 44+1, typically these are +1 for the previous one.</p>
<p>There are some oddities. If the server crashed, it would be extremely unlikely that it would have any knowledge of Subscriptions prior to the crash, though not impossible (but I'm not aware of such implementation; plus the UA Spec Durable Subscriptions would need to be enabled by the client, which we do not do). So, any TransferSubscriptions call should thus fail.</p>
<p>Now then, IF other clients would be connecting to the same server, then there are some scenarios where depending on the implementation and other stuff it might be possible to Transfersubscription another clients Subscription, which in this case would be something they just have made. Though this should only happen for Anonymous Sessions, if for any.</p>
<p>The timeout and lifetimeout do depend on delta to Subscription.getLastAlive() (vs. publishinterval and respective keepalive/lifetime), which is updated if anything is done, e.g. server sends keepalive or data for the Subscription (or if data is received that indicates an update was missed and is being RePublished).</p>
<p>Note that UaClient will keep sending PublishRequests as long as it has Subscription.isAlive() subscriptions and PublishRequests are not keyed to any subscription.</p>
<p>Does the "Server sent a previously acknowledged sequence number" numbers keep rising or stay 1? Though you showed one line that has also 2 for id 36.</p>
<p>Maybe the TransferSubscriptions somehow resulted in the server making some subscription objects that do nothing, but send keepalives. Or maybe they do send data, but they started as-if they were new ones, so the sequence number is wrong (and thus you see those logs for very long while until they catch up the number the server send prev to the crash).</p>
]]></description>
					                    <pubDate>Mon, 13 Apr 2026 20:04:18 +0300</pubDate>
                </item>
				                <item>
                    <title>devaskim on Bad_DecodingError (0x80070000) "Decoding halted because of invalid data in the stream."</title>
                    <link>https://forum.prosysopc.com/forum/opc-ua-java-sdk/bad_decodingerror-0x80070000-decoding-halted-because-of-invalid-data-in-the-stream/#p7521</link>
                    <category>OPC UA SDK for Java</category>
                    <guid isPermaLink="true">https://forum.prosysopc.com/forum/opc-ua-java-sdk/bad_decodingerror-0x80070000-decoding-halted-because-of-invalid-data-in-the-stream/#p7521</guid>
					                        <description><![CDATA[<p>Many thanks, Bjarne!<br />
After fixing definition the issue is gone and data is deserialized to DynamicStructure object.<br />
Last question: is there any example how to deal with such objects in Java?</p>
]]></description>
					                    <pubDate>Mon, 13 Apr 2026 19:48:57 +0300</pubDate>
                </item>
				                <item>
                    <title>Bjarne Boström on Bad_DecodingError (0x80070000) "Decoding halted because of invalid data in the stream."</title>
                    <link>https://forum.prosysopc.com/forum/opc-ua-java-sdk/bad_decodingerror-0x80070000-decoding-halted-because-of-invalid-data-in-the-stream/#p7520</link>
                    <category>OPC UA SDK for Java</category>
                    <guid isPermaLink="true">https://forum.prosysopc.com/forum/opc-ua-java-sdk/bad_decodingerror-0x80070000-decoding-halted-because-of-invalid-data-in-the-stream/#p7520</guid>
					                        <description><![CDATA[<p>That does explain. The ValueRanks are incorrect, they should be -1, not 0. See <a href="https://reference.opcfoundation.org/Core/Part3/v105/docs/8.51" rel="nofollow" target="_blank"><a href="https://reference.opcfoundatio" rel="nofollow">https://reference.opcfoundatio</a>...../docs/8.51</a> "ValueRank Int32 The value rank for the field. It shall be Scalar (-1) or a fixed rank Array (&#062;=1).". In OPC UA the ValueRank is a bit ... compliacted, but it is the number of dimensions when 1+, but 0 and some negative numbers have special meaning, see Variable NodeClass as an Attribute, see <a href="https://reference.opcfoundation.org/Core/Part3/v105/docs/5.6" rel="nofollow" target="_blank"><a href="https://reference.opcfoundatio" rel="nofollow">https://reference.opcfoundatio</a>.....5/docs/5.6</a>. However, Structures need fixed number of things (so scalar or fixed known dimension), at least so far.</p>
<p>So, basically our parser will ignore this DataType as the definition is incorrect, thus later decodings will also fail. If you can correct this on the server or ask the maintainers of it to correct it should start to work. Possibly UaExpert has done the check in a way that incorrectly allows 0 to work (such as  scalar).</p>
]]></description>
					                    <pubDate>Mon, 13 Apr 2026 19:20:20 +0300</pubDate>
                </item>
				                <item>
                    <title>devaskim on Bad_DecodingError (0x80070000) "Decoding halted because of invalid data in the stream."</title>
                    <link>https://forum.prosysopc.com/forum/opc-ua-java-sdk/bad_decodingerror-0x80070000-decoding-halted-because-of-invalid-data-in-the-stream/#p7519</link>
                    <category>OPC UA SDK for Java</category>
                    <guid isPermaLink="true">https://forum.prosysopc.com/forum/opc-ua-java-sdk/bad_decodingerror-0x80070000-decoding-halted-because-of-invalid-data-in-the-stream/#p7519</guid>
					                        <description><![CDATA[<p>Here is output of our DataType using Prosys OPC UA Browser</p>
<p>DataTypeDefinition StructureDefinition [DefaultEncodingId="ns=1;i=1004", BaseDataType="i=22", StructureType="Structure", Fields="[<br />
    StructureField [Name="Max", Description="", DataType="i=5", ValueRank="0", ArrayDimensions="[]", MaxStringLength="0", IsOptional="false"],<br />
    StructureField [Name="Min", Description="", DataType="i=5", ValueRank="0", ArrayDimensions="[]", MaxStringLength="0", IsOptional="false"],<br />
    StructureField [Name="Status", Description="", DataType="i=5", ValueRank="0", ArrayDimensions="[]", MaxStringLength="0", IsOptional="false"]]"]</p>
<p>Bad_AttributeIdInvalid error are only in RolePermissions, UserRolePermissions and AccessRestrictions attributes.</p>
]]></description>
					                    <pubDate>Mon, 13 Apr 2026 18:49:07 +0300</pubDate>
                </item>
				                <item>
                    <title>rocket science on Connect to server with security mode NONE and user/password</title>
                    <link>https://forum.prosysopc.com/forum/opc-ua-java-sdk/connect-to-server-with-security-mode-none-and-user-password/#p7518</link>
                    <category>OPC UA SDK for Java</category>
                    <guid isPermaLink="true">https://forum.prosysopc.com/forum/opc-ua-java-sdk/connect-to-server-with-security-mode-none-and-user-password/#p7518</guid>
					                        <description><![CDATA[<p>I understand. Thank you for that detailed explanation!</p>
]]></description>
					                    <pubDate>Mon, 13 Apr 2026 18:44:27 +0300</pubDate>
                </item>
				                <item>
                    <title>rocket science on Subscription Transfer with KEP Server EX</title>
                    <link>https://forum.prosysopc.com/forum/opc-ua-java-sdk/subscription-transfer-with-kep-server-ex/#p7517</link>
                    <category>OPC UA SDK for Java</category>
                    <guid isPermaLink="true">https://forum.prosysopc.com/forum/opc-ua-java-sdk/subscription-transfer-with-kep-server-ex/#p7517</guid>
					                        <description><![CDATA[<p>Hi,</p>
<p>I had an issue where KEPServerEX crashed and after restart of KEP Server EX it seemed that only 1 out of 6 subscription did work.</p>
<p>Before the KEPServer crash I got onAlive for all 6 subscriptions and also onStatusChange messages:</p>
<p>2026-04-10 01:17:18,234 Subscription onAlive(): Subscription id=40 PublishingInterval=1000.0 isPublishingEnabled=true priority=0 lifetimeCount=60 maxKeepAliveCount=20 maxNotificationsPerPublish=0<br />
2026-04-10 01:17:18,234 Subscription onAlive(): Subscription id=42 PublishingInterval=1000.0 isPublishingEnabled=true priority=0 lifetimeCount=60 maxKeepAliveCount=20 maxNotificationsPerPublish=0<br />
2026-04-10 01:17:27,236 Subscription onAlive(): Subscription id=45 PublishingInterval=1000.0 isPublishingEnabled=true priority=0 lifetimeCount=60 maxKeepAliveCount=20 maxNotificationsPerPublish=0<br />
2026-04-10 01:17:28,236 Subscription onAlive(): Subscription id=44 PublishingInterval=1000.0 isPublishingEnabled=true priority=0 lifetimeCount=60 maxKeepAliveCount=20 maxNotificationsPerPublish=0<br />
2026-04-10 01:17:29,238 Subscription onAlive(): Subscription id=38 PublishingInterval=1000.0 isPublishingEnabled=true priority=0 lifetimeCount=60 maxKeepAliveCount=20 maxNotificationsPerPublish=0<br />
2026-04-10 01:17:33,242 Subscription onAlive(): Subscription id=36 PublishingInterval=1000.0 isPublishingEnabled=true priority=0 lifetimeCount=60 maxKeepAliveCount=20 maxNotificationsPerPublish=0</p>
<p>2026-04-10 01:17:35,346 onStatusChange: status=ServerStatusDataType [StartTime="04/08/26 10:34:23.0326081 GMT", CurrentTime="04/10/26 08:17:35.3377350 GMT", State="Running", BuildInfo="BuildInfo [ProductUri="urn:XXX:Kepware.KEPServerEX.V6:UA%20Server", ManufacturerName="Kepware", ProductName="KEPServerEX", SoftwareVersion="6.17", BuildNumber="269", BuildDate="03/11/25 11:39:45.0000000 GMT"]", SecondsTillShutdown="0", ShutdownReason=""] statusCode=GOOD (0x00000000) "The operation succeeded."<br />
2026-04-10 01:17:36,347 onStatusChange: status=ServerStatusDataType [StartTime="04/08/26 10:34:23.0326081 GMT", CurrentTime="04/10/26 08:17:36.3388048 GMT", State="Running", BuildInfo="BuildInfo [ProductUri="urn:XXX:Kepware.KEPServerEX.V6:UA%20Server", ManufacturerName="Kepware", ProductName="KEPServerEX", SoftwareVersion="6.17", BuildNumber="269", BuildDate="03/11/25 11:39:45.0000000 GMT"]", SecondsTillShutdown="0", ShutdownReason=""] statusCode=GOOD (0x00000000) "The operation succeeded."</p>
<p>Then the KEP Server crashed:</p>
<p>2026-04-10 01:17:48,349 onStatusChange: status=null statusCode=Bad_Timeout (0x800A0000) "The operation timed out."</p>
<p>For the 6 subscriptions I'm seeing also the onTimeOut and onLifetimeTimeOut</p>
<p>2026-04-10 01:17:48,449 Subscription onTimeout(): Subscription id=40 PublishingInterval=1000.0 isPublishingEnabled=true priority=0 lifetimeCount=60 maxKeepAliveCount=20 maxNotificationsPerPublish=0<br />
2026-04-10 01:17:48,449 Subscription onTimeout(): Subscription id=42 PublishingInterval=1000.0 isPublishingEnabled=true priority=0 lifetimeCount=60 maxKeepAliveCount=20 maxNotificationsPerPublish=0<br />
2026-04-10 01:19:38,671 Subscription onTimeout(): Subscription id=36 PublishingInterval=1000.0 isPublishingEnabled=true priority=0 lifetimeCount=60 maxKeepAliveCount=20 maxNotificationsPerPublish=0<br />
2026-04-10 01:19:38,671 Subscription onTimeout(): Subscription id=38 PublishingInterval=1000.0 isPublishingEnabled=true priority=0 lifetimeCount=60 maxKeepAliveCount=20 maxNotificationsPerPublish=0<br />
2026-04-10 01:19:38,671 Subscription onTimeout(): Subscription id=44 PublishingInterval=1000.0 isPublishingEnabled=true priority=0 lifetimeCount=60 maxKeepAliveCount=20 maxNotificationsPerPublish=0<br />
2026-04-10 01:19:38,671 Subscription onTimeout(): Subscription id=45 PublishingInterval=1000.0 isPublishingEnabled=true priority=0 lifetimeCount=60 maxKeepAliveCount=20 maxNotificationsPerPublish=0</p>
<p>2026-04-10 01:19:38,671 Subscription onLifetimeTimeout(): Subscription id=36 PublishingInterval=1000.0 isPublishingEnabled=true priority=0 lifetimeCount=60 maxKeepAliveCount=20 maxNotificationsPerPublish=0<br />
2026-04-10 01:19:38,671 Subscription onLifetimeTimeout(): Subscription id=38 PublishingInterval=1000.0 isPublishingEnabled=true priority=0 lifetimeCount=60 maxKeepAliveCount=20 maxNotificationsPerPublish=0<br />
2026-04-10 01:19:38,671 Subscription onLifetimeTimeout(): Subscription id=40 PublishingInterval=1000.0 isPublishingEnabled=true priority=0 lifetimeCount=60 maxKeepAliveCount=20 maxNotificationsPerPublish=0<br />
2026-04-10 01:19:38,671 Subscription onLifetimeTimeout(): Subscription id=42 PublishingInterval=1000.0 isPublishingEnabled=true priority=0 lifetimeCount=60 maxKeepAliveCount=20 maxNotificationsPerPublish=0<br />
2026-04-10 01:19:38,671 Subscription onLifetimeTimeout(): Subscription id=44 PublishingInterval=1000.0 isPublishingEnabled=true priority=0 lifetimeCount=60 maxKeepAliveCount=20 maxNotificationsPerPublish=0<br />
2026-04-10 01:19:38,671 Subscription onLifetimeTimeout(): Subscription id=45 PublishingInterval=1000.0 isPublishingEnabled=true priority=0 lifetimeCount=60 maxKeepAliveCount=20 maxNotificationsPerPublish=0</p>
<p>When the server was back online (restarted); i can see that a subscription transfer happens:</p>
<p>2026-04-10 02:08:35,237&#124;SecureChannelTcp&#124;DEBUG&#124;Response: ActivateSessionResponse<br />
2026-04-10 02:08:35,237&#124;UaClient&#124;DEBUG&#124;connectSubscriptions<br />
2026-04-10 02:08:35,237&#124;UaClient&#124;DEBUG&#124;transferSubscriptions: subscriptions.size()=6</p>
<p>In the log it shows the TransferSubscriptionsResponse with disconnectSubscriptions for 5 subscriptions GOOD and for 1 Bad</p>
<p>2026-04-10 02:08:35,238&#124;SecureChannelTcp&#124;DEBUG&#124;Response: TransferSubscriptionsResponse<br />
2026-04-10 02:08:35,238&#124;UaClient&#124;DEBUG&#124;disconnectSubscriptions:<br />
	[TransferResult [StatusCode="GOOD (0x00000000) "The operation succeeded."", AvailableSequenceNumbers="[]"],<br />
	 TransferResult [StatusCode="GOOD (0x00000000) "The operation succeeded."", AvailableSequenceNumbers="[]"],<br />
	 TransferResult [StatusCode="GOOD (0x00000000) "The operation succeeded."", AvailableSequenceNumbers="[]"],<br />
	 TransferResult [StatusCode="GOOD (0x00000000) "The operation succeeded."", AvailableSequenceNumbers="[]"],<br />
	 TransferResult [StatusCode="GOOD (0x00000000) "The operation succeeded."", AvailableSequenceNumbers="[]"],<br />
	 TransferResult [StatusCode="Bad_SubscriptionIdInvalid (0x80280000) "The subscription id is not valid."", AvailableSequenceNumbers="[]"]]</p>
<p>2026-04-10 02:08:35,238&#124;UaClient&#124;DEBUG&#124;createSubscription: subscription=36, allowModification=true, isModified=false<br />
2026-04-10 02:08:35,238&#124;UaClient&#124;DEBUG&#124;createSubscription: subscription=38, allowModification=true, isModified=false<br />
2026-04-10 02:08:35,238&#124;UaClient&#124;DEBUG&#124;createSubscription: subscription=40, allowModification=true, isModified=false<br />
2026-04-10 02:08:35,238&#124;UaClient&#124;DEBUG&#124;createSubscription: subscription=42, allowModification=true, isModified=false<br />
2026-04-10 02:08:35,238&#124;UaClient&#124;DEBUG&#124;createSubscription: subscription=44, allowModification=true, isModified=false<br />
2026-04-10 02:08:35,238&#124;UaClient&#124;DEBUG&#124;createSubscription: subscription=0, allowModification=true, isModified=false<br />
2026-04-10 02:08:35,238&#124;UaClient&#124;DEBUG&#124;createSubscription: subscription=Subscription id=0 PublishingInterval=1000.0 isPublishingEnabled=true priority=0 lifetimeCount=60 maxKeepAliveCount=20 maxNotificationsPerPublish=0<br />
2026-04-10 02:08:35,238&#124;SecureChannelTcp&#124;DEBUG&#124;Response: CreateSubscriptionResponse<br />
2026-04-10 02:08:35,238&#124;UaClient&#124;DEBUG&#124;createSubscription: reponse=GOOD (0x00000000) "The operation succeeded."<br />
2026-04-10 02:08:35,238&#124;UaClient&#124;DEBUG&#124;createSubscription: response SubscriptionId=45, RevisedPublishingInterval=1000.0, RevisedMaxKeepAliveCount=20, RevisedLifetimeCount=60<br />
2026-04-10 02:08:35,241&#124;SecureChannelTcp&#124;DEBUG&#124;Response: CreateMonitoredItemsResponse</p>
<p>I see an onAfterCreate only for 1 subscription</p>
<p>2026-04-10 02:08:35,241 onAfterCreate(): Subscription id=45 PublishingInterval=1000.0 isPublishingEnabled=true priority=0 lifetimeCount=60 maxKeepAliveCount=20 maxNotificationsPerPublish=0</p>
<p>2026-04-10 02:08:35,241&#124;UaClient&#124;INFO &#124;reconnect: Reconnected to server (new session)</p>
<p>From that point on, I'm getting only onAlive() for this subscription but not of the other 5</p>
<p>2026-04-10 02:08:36,233 onAlive(): Subscription id=45 PublishingInterval=1000.0 isPublishingEnabled=true priority=0 lifetimeCount=60 maxKeepAliveCount=20 maxNotificationsPerPublish=0</p>
<p>I'm also not getting onDataChanges for the 5 subscription, but only the one for id=45</p>
<p>Instead I can see a lot of this loggings:</p>
<p>2026-04-10 02:08:35,944&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 1 for Subscription 38<br />
2026-04-10 02:08:36,044&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 1 for Subscription 40<br />
2026-04-10 02:08:36,233&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 1 for Subscription 42<br />
2026-04-10 02:08:36,233&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 1 for Subscription 44<br />
2026-04-10 02:08:38,734&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 2 for Subscription 36<br />
2026-04-10 02:11:41,254&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 1 for Subscription 36<br />
2026-04-10 02:11:41,254&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 1 for Subscription 38<br />
2026-04-10 02:11:41,285&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 1 for Subscription 40<br />
2026-04-10 02:11:41,285&#124;Subscription&#124;WARN &#124;Server sent a previously acknowledged sequence number 1 for Subscription 42</p>
<p>I'm also logging the subscription isConnected() and isAlive() periodically and it seems that both are true (even it seems that I do no more get onDataChanges)</p>
<p>02:12:52,359 Subscription id=36 isConnected(true), isAlive(true)<br />
02:12:52,359 Subscription id=38 isConnected(true), isAlive(true)<br />
02:12:52,359 Subscription id=40 isConnected(true), isAlive(true)<br />
02:12:52,359 Subscription id=42 isConnected(true), isAlive(true)<br />
02:12:52,359 Subscription id=44 isConnected(true), isAlive(true)<br />
02:12:52,359 Subscription id=45 isConnected(true), isAlive(true)</p>
<p>Could it be possible that KEPServerEX has some problem here with subscription transfer?</p>
<p>Based on the logging during 'transferSubscriptions' for me it looked like that 5 subscription could be transferred and one of them could not. The one that could not gets recreated but unfortunatly this was the only one for which I'm getting onDataChanges. Somehow for the other 5 it seems that the server did somehow not handled the transfer correctly</p>
<p>What do you think about that?</p>
]]></description>
					                    <pubDate>Mon, 13 Apr 2026 18:42:37 +0300</pubDate>
                </item>
				                <item>
                    <title>Bjarne Boström on Connect to server with security mode NONE and user/password</title>
                    <link>https://forum.prosysopc.com/forum/opc-ua-java-sdk/connect-to-server-with-security-mode-none-and-user-password/#p7516</link>
                    <category>OPC UA SDK for Java</category>
                    <guid isPermaLink="true">https://forum.prosysopc.com/forum/opc-ua-java-sdk/connect-to-server-with-security-mode-none-and-user-password/#p7516</guid>
					                        <description><![CDATA[<p>Sorry, we might not have a bug, since I missed one place re-set the Server's certificate to the EndpointDescription after the CreateSessionResponse..</p>
<p>Anyway, now that we see the UserTokenPolicies it is obivious, the server requires a certificate in this case.<br />
...<br />
[0]: EndpointDescription<br />
...<br />
SecurityPolicyUri: <a href="http://opcfoundation.org/UA/SecurityPolicy#None" rel="nofollow" target="_blank">http://opcfoundation.org/UA/SecurityPolicy#None</a><br />
UserIdentityTokens: Array of UserTokenPolicy<br />
ArraySize: 3<br />
[0]: UserTokenPolicy<br />
PolicyId: anonymous<br />
UserTokenType: Anonymous (0x00000000)<br />
IssuedTokenType: [OpcUa Null String]<br />
IssuerEndpointUrl: [OpcUa Null String]<br />
SecurityPolicyUri: [OpcUa Null String]<br />
[1]: UserTokenPolicy<br />
PolicyId: username<br />
UserTokenType: UserName (0x00000001)<br />
IssuedTokenType: [OpcUa Null String]<br />
IssuerEndpointUrl: [OpcUa Null String]<br />
SecurityPolicyUri: <a href="http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256" rel="nofollow" target="_blank">http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256</a><br />
[2]: UserTokenPolicy<br />
PolicyId: certificate<br />
UserTokenType: Certificate (0x00000002)<br />
IssuedTokenType: [OpcUa Null String]<br />
IssuerEndpointUrl: [OpcUa Null String]<br />
SecurityPolicyUri: <a href="http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256" rel="nofollow" target="_blank">http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256</a><br />
...</p>
<p>Thus, the None security endpoint contains a single UserName UserTokenPolicy, that defines security must be used for the token (SecurityPolicyUri: <a href="http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256" rel="nofollow" target="_blank">http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256</a>), thus therefore also a Certificate from the server is required in order to use this UserTokenPolicy, so that the password is encrypted.</p>
<p>IF it would have instead been defined like<br />
[1]: UserTokenPolicy<br />
PolicyId: username<br />
UserTokenType: UserName (0x00000001)<br />
IssuedTokenType: [OpcUa Null String]<br />
IssuerEndpointUrl: [OpcUa Null String]<br />
SecurityPolicyUri: null</p>
<p>OR</p>
<p>[1]: UserTokenPolicy<br />
PolicyId: username<br />
UserTokenType: UserName (0x00000001)<br />
IssuedTokenType: [OpcUa Null String]<br />
IssuerEndpointUrl: [OpcUa Null String]<br />
SecurityPolicyUri: <a href="http://opcfoundation.org/UA/SecurityPolicy#None" rel="nofollow" target="_blank">http://opcfoundation.org/UA/SecurityPolicy#None</a></p>
<p>then it would not need a Certificate and the password would be in plain-txt over the wire for the NONE endpoint (null basically means use the same policy as the channel). Though I would need to test does this work with our SDK.</p>
<p>Also, that being said, with our SDK, IF it there would be more than one UserTokenPolicy whose type is UserName, then basically the first one of those would be used. It is not possible to currently select it manually.</p>
]]></description>
					                    <pubDate>Mon, 13 Apr 2026 18:30:32 +0300</pubDate>
                </item>
				                <item>
                    <title>rocket science on Connect to server with security mode NONE and user/password</title>
                    <link>https://forum.prosysopc.com/forum/opc-ua-java-sdk/connect-to-server-with-security-mode-none-and-user-password/#p7515</link>
                    <category>OPC UA SDK for Java</category>
                    <guid isPermaLink="true">https://forum.prosysopc.com/forum/opc-ua-java-sdk/connect-to-server-with-security-mode-none-and-user-password/#p7515</guid>
					                        <description><![CDATA[<p>sure, here is the complete CreateSessionResponse:</p>
<p>OpcUa Binary Protocol<br />
    Message Type: MSG<br />
    Chunk Type: F<br />
    Message Size: 3670<br />
    SecureChannelId: 1754025483<br />
    Security Token Id: 50795<br />
    Sequence Number: 2<br />
    RequestId: 2<br />
    Message: Encodeable Object<br />
        TypeId: ExpandedNodeId<br />
            NodeId EncodingMask: Four byte encoded Numeric (0x01)<br />
            NodeId Namespace Index: 0<br />
            NodeId Identifier Numeric: CreateSessionResponse (464)<br />
        CreateSessionResponse<br />
            ResponseHeader: ResponseHeader<br />
                Timestamp: Apr 13, 2026 13:58:39.653954400 Mitteleuropäische Sommerzeit<br />
                RequestHandle: 0<br />
                ServiceResult: 0x00000000 [Good]<br />
                ServiceDiagnostics: DiagnosticInfo<br />
                    EncodingMask: 0x00<br />
                        .... ...0 = has symbolic id: False<br />
                        .... ..0. = has namespace: False<br />
                        .... .0.. = has localizedtext: False<br />
                        .... 0... = has locale: False<br />
                        ...0 .... = has additional info: False<br />
                        ..0. .... = has inner statuscode: False<br />
                        .0.. .... = has inner diagnostic info: False<br />
                StringTable: Array of String<br />
                    ArraySize: -1<br />
                AdditionalHeader: ExtensionObject<br />
                    TypeId: NodeId<br />
                        .... 0000 = EncodingMask: Two byte encoded Numeric (0x0)<br />
                        Identifier Numeric: 0<br />
                    EncodingMask: 0x00<br />
                        .... ...0 = has binary body: False<br />
                        .... ..0. = has xml body: False<br />
            SessionId: NodeId<br />
                .... 0011 = EncodingMask: String (0x3)<br />
                Namespace Index: 1<br />
                Identifier String: Session:08eb0d7e-8db5-4c58-98aa-4a892447a8bf<br />
            AuthenticationToken: NodeId<br />
                .... 0101 = EncodingMask: Opaque (0x5)<br />
                Namespace Index: 0<br />
                Identifier ByteString: 5b0c5625cbf57d7c9e8a14e83a6578fc94cdd22c4e643381398ea5d3003cd421<br />
            RevisedSessionTimeout: 30000<br />
            ServerNonce: d2db1e18e1361a06afa29e46a241fdda1a9b844b58550ec021582cc51648f2ef<br />
            ServerCertificate: [OpcUa Null ByteString]<br />
            ServerEndpoints: Array of EndpointDescription<br />
                ArraySize: 7<br />
                [0]: EndpointDescription<br />
                    EndpointUrl: opc.tcp://milo.digitalpetri.com:62541/milo<br />
                    Server: ApplicationDescription<br />
                        ApplicationUri: urn:opc:eclipse:milo:opc-ua-demo-server:b5122493-db3c-4d9e-b574-9e3b971f729e<br />
                        ProductUri: [OpcUa Null String]<br />
                        ApplicationName: LocalizedText<br />
                            EncodingMask: 0x00<br />
                                .... ...0 = has locale information: False<br />
                                .... ..0. = has text: False<br />
                        ApplicationType: Server (0x00000000)<br />
                        GatewayServerUri: [OpcUa Null String]<br />
                        DiscoveryProfileUri: [OpcUa Null String]<br />
                        DiscoveryUrls: Array of String<br />
                            ArraySize: -1<br />
                    ServerCertificate: [OpcUa Null ByteString]<br />
                    MessageSecurityMode: None (0x00000001)<br />
                    SecurityPolicyUri: <a href="http://opcfoundation.org/UA/SecurityPolicy#None" rel="nofollow" target="_blank">http://opcfoundation.org/UA/SecurityPolicy#None</a><br />
                    UserIdentityTokens: Array of UserTokenPolicy<br />
                        ArraySize: 3<br />
                        [0]: UserTokenPolicy<br />
                            PolicyId: anonymous<br />
                            UserTokenType: Anonymous (0x00000000)<br />
                            IssuedTokenType: [OpcUa Null String]<br />
                            IssuerEndpointUrl: [OpcUa Null String]<br />
                            SecurityPolicyUri: [OpcUa Null String]<br />
                        [1]: UserTokenPolicy<br />
                            PolicyId: username<br />
                            UserTokenType: UserName (0x00000001)<br />
                            IssuedTokenType: [OpcUa Null String]<br />
                            IssuerEndpointUrl: [OpcUa Null String]<br />
                            SecurityPolicyUri: <a href="http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256" rel="nofollow" target="_blank">http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256</a><br />
                        [2]: UserTokenPolicy<br />
                            PolicyId: certificate<br />
                            UserTokenType: Certificate (0x00000002)<br />
                            IssuedTokenType: [OpcUa Null String]<br />
                            IssuerEndpointUrl: [OpcUa Null String]<br />
                            SecurityPolicyUri: <a href="http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256" rel="nofollow" target="_blank">http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256</a><br />
                    TransportProfileUri: <a href="http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary" rel="nofollow" target="_blank">http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary</a><br />
                    SecurityLevel: 32<br />
                [1]: EndpointDescription<br />
                    EndpointUrl: opc.tcp://milo.digitalpetri.com:62541/milo<br />
                    Server: ApplicationDescription<br />
                        ApplicationUri: urn:opc:eclipse:milo:opc-ua-demo-server:b5122493-db3c-4d9e-b574-9e3b971f729e<br />
                        ProductUri: [OpcUa Null String]<br />
                        ApplicationName: LocalizedText<br />
                            EncodingMask: 0x00<br />
                                .... ...0 = has locale information: False<br />
                                .... ..0. = has text: False<br />
                        ApplicationType: Server (0x00000000)<br />
                        GatewayServerUri: [OpcUa Null String]<br />
                        DiscoveryProfileUri: [OpcUa Null String]<br />
                        DiscoveryUrls: Array of String<br />
                            ArraySize: -1<br />
                    ServerCertificate: [OpcUa Null ByteString]<br />
                    MessageSecurityMode: Sign (0x00000002)<br />
                    SecurityPolicyUri: <a href="http://opcfoundation.org/UA/SecurityPolicy#Aes128_Sha256_RsaOaep" rel="nofollow" target="_blank">http://opcfoundation.org/UA/SecurityPolicy#Aes128_Sha256_RsaOaep</a><br />
                    UserIdentityTokens: Array of UserTokenPolicy<br />
                        ArraySize: 3<br />
                        [0]: UserTokenPolicy<br />
                            PolicyId: anonymous<br />
                            UserTokenType: Anonymous (0x00000000)<br />
                            IssuedTokenType: [OpcUa Null String]<br />
                            IssuerEndpointUrl: [OpcUa Null String]<br />
                            SecurityPolicyUri: [OpcUa Null String]<br />
                        [1]: UserTokenPolicy<br />
                            PolicyId: username<br />
                            UserTokenType: UserName (0x00000001)<br />
                            IssuedTokenType: [OpcUa Null String]<br />
                            IssuerEndpointUrl: [OpcUa Null String]<br />
                            SecurityPolicyUri: <a href="http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256" rel="nofollow" target="_blank">http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256</a><br />
                        [2]: UserTokenPolicy<br />
                            PolicyId: certificate<br />
                            UserTokenType: Certificate (0x00000002)<br />
                            IssuedTokenType: [OpcUa Null String]<br />
                            IssuerEndpointUrl: [OpcUa Null String]<br />
                            SecurityPolicyUri: <a href="http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256" rel="nofollow" target="_blank">http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256</a><br />
                    TransportProfileUri: <a href="http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary" rel="nofollow" target="_blank">http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary</a><br />
                    SecurityLevel: 68<br />
                [2]: EndpointDescription<br />
                    EndpointUrl: opc.tcp://milo.digitalpetri.com:62541/milo<br />
                    Server: ApplicationDescription<br />
                        ApplicationUri: urn:opc:eclipse:milo:opc-ua-demo-server:b5122493-db3c-4d9e-b574-9e3b971f729e<br />
                        ProductUri: [OpcUa Null String]<br />
                        ApplicationName: LocalizedText<br />
                            EncodingMask: 0x00<br />
                                .... ...0 = has locale information: False<br />
                                .... ..0. = has text: False<br />
                        ApplicationType: Server (0x00000000)<br />
                        GatewayServerUri: [OpcUa Null String]<br />
                        DiscoveryProfileUri: [OpcUa Null String]<br />
                        DiscoveryUrls: Array of String<br />
                            ArraySize: -1<br />
                    ServerCertificate: [OpcUa Null ByteString]<br />
                    MessageSecurityMode: SignAndEncrypt (0x00000003)<br />
                    SecurityPolicyUri: <a href="http://opcfoundation.org/UA/SecurityPolicy#Aes128_Sha256_RsaOaep" rel="nofollow" target="_blank">http://opcfoundation.org/UA/SecurityPolicy#Aes128_Sha256_RsaOaep</a><br />
                    UserIdentityTokens: Array of UserTokenPolicy<br />
                        ArraySize: 3<br />
                        [0]: UserTokenPolicy<br />
                            PolicyId: anonymous<br />
                            UserTokenType: Anonymous (0x00000000)<br />
                            IssuedTokenType: [OpcUa Null String]<br />
                            IssuerEndpointUrl: [OpcUa Null String]<br />
                            SecurityPolicyUri: [OpcUa Null String]<br />
                        [1]: UserTokenPolicy<br />
                            PolicyId: username<br />
                            UserTokenType: UserName (0x00000001)<br />
                            IssuedTokenType: [OpcUa Null String]<br />
                            IssuerEndpointUrl: [OpcUa Null String]<br />
                            SecurityPolicyUri: <a href="http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256" rel="nofollow" target="_blank">http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256</a><br />
                        [2]: UserTokenPolicy<br />
                            PolicyId: certificate<br />
                            UserTokenType: Certificate (0x00000002)<br />
                            IssuedTokenType: [OpcUa Null String]<br />
                            IssuerEndpointUrl: [OpcUa Null String]<br />
                            SecurityPolicyUri: <a href="http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256" rel="nofollow" target="_blank">http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256</a><br />
                    TransportProfileUri: <a href="http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary" rel="nofollow" target="_blank">http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary</a><br />
                    SecurityLevel: 132<br />
                [3]: EndpointDescription<br />
                    EndpointUrl: opc.tcp://milo.digitalpetri.com:62541/milo<br />
                    Server: ApplicationDescription<br />
                        ApplicationUri: urn:opc:eclipse:milo:opc-ua-demo-server:b5122493-db3c-4d9e-b574-9e3b971f729e<br />
                        ProductUri: [OpcUa Null String]<br />
                        ApplicationName: LocalizedText<br />
                            EncodingMask: 0x00<br />
                                .... ...0 = has locale information: False<br />
                                .... ..0. = has text: False<br />
                        ApplicationType: Server (0x00000000)<br />
                        GatewayServerUri: [OpcUa Null String]<br />
                        DiscoveryProfileUri: [OpcUa Null String]<br />
                        DiscoveryUrls: Array of String<br />
                            ArraySize: -1<br />
                    ServerCertificate: [OpcUa Null ByteString]<br />
                    MessageSecurityMode: Sign (0x00000002)<br />
                    SecurityPolicyUri: <a href="http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256" rel="nofollow" target="_blank">http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256</a><br />
                    UserIdentityTokens: Array of UserTokenPolicy<br />
                        ArraySize: 3<br />
                        [0]: UserTokenPolicy<br />
                            PolicyId: anonymous<br />
                            UserTokenType: Anonymous (0x00000000)<br />
                            IssuedTokenType: [OpcUa Null String]<br />
                            IssuerEndpointUrl: [OpcUa Null String]<br />
                            SecurityPolicyUri: [OpcUa Null String]<br />
                        [1]: UserTokenPolicy<br />
                            PolicyId: username<br />
                            UserTokenType: UserName (0x00000001)<br />
                            IssuedTokenType: [OpcUa Null String]<br />
                            IssuerEndpointUrl: [OpcUa Null String]<br />
                            SecurityPolicyUri: <a href="http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256" rel="nofollow" target="_blank">http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256</a><br />
                        [2]: UserTokenPolicy<br />
                            PolicyId: certificate<br />
                            UserTokenType: Certificate (0x00000002)<br />
                            IssuedTokenType: [OpcUa Null String]<br />
                            IssuerEndpointUrl: [OpcUa Null String]<br />
                            SecurityPolicyUri: <a href="http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256" rel="nofollow" target="_blank">http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256</a><br />
                    TransportProfileUri: <a href="http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary" rel="nofollow" target="_blank">http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary</a><br />
                    SecurityLevel: 72<br />
                [4]: EndpointDescription<br />
                    EndpointUrl: opc.tcp://milo.digitalpetri.com:62541/milo<br />
                    Server: ApplicationDescription<br />
                        ApplicationUri: urn:opc:eclipse:milo:opc-ua-demo-server:b5122493-db3c-4d9e-b574-9e3b971f729e<br />
                        ProductUri: [OpcUa Null String]<br />
                        ApplicationName: LocalizedText<br />
                            EncodingMask: 0x00<br />
                                .... ...0 = has locale information: False<br />
                                .... ..0. = has text: False<br />
                        ApplicationType: Server (0x00000000)<br />
                        GatewayServerUri: [OpcUa Null String]<br />
                        DiscoveryProfileUri: [OpcUa Null String]<br />
                        DiscoveryUrls: Array of String<br />
                            ArraySize: -1<br />
                    ServerCertificate: [OpcUa Null ByteString]<br />
                    MessageSecurityMode: SignAndEncrypt (0x00000003)<br />
                    SecurityPolicyUri: <a href="http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256" rel="nofollow" target="_blank">http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256</a><br />
                    UserIdentityTokens: Array of UserTokenPolicy<br />
                        ArraySize: 3<br />
                        [0]: UserTokenPolicy<br />
                            PolicyId: anonymous<br />
                            UserTokenType: Anonymous (0x00000000)<br />
                            IssuedTokenType: [OpcUa Null String]<br />
                            IssuerEndpointUrl: [OpcUa Null String]<br />
                            SecurityPolicyUri: [OpcUa Null String]<br />
                        [1]: UserTokenPolicy<br />
                            PolicyId: username<br />
                            UserTokenType: UserName (0x00000001)<br />
                            IssuedTokenType: [OpcUa Null String]<br />
                            IssuerEndpointUrl: [OpcUa Null String]<br />
                            SecurityPolicyUri: <a href="http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256" rel="nofollow" target="_blank">http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256</a><br />
                        [2]: UserTokenPolicy<br />
                            PolicyId: certificate<br />
                            UserTokenType: Certificate (0x00000002)<br />
                            IssuedTokenType: [OpcUa Null String]<br />
                            IssuerEndpointUrl: [OpcUa Null String]<br />
                            SecurityPolicyUri: <a href="http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256" rel="nofollow" target="_blank">http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256</a><br />
                    TransportProfileUri: <a href="http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary" rel="nofollow" target="_blank">http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary</a><br />
                    SecurityLevel: 136<br />
                [5]: EndpointDescription<br />
                    EndpointUrl: opc.tcp://milo.digitalpetri.com:62541/milo<br />
                    Server: ApplicationDescription<br />
                        ApplicationUri: urn:opc:eclipse:milo:opc-ua-demo-server:b5122493-db3c-4d9e-b574-9e3b971f729e<br />
                        ProductUri: [OpcUa Null String]<br />
                        ApplicationName: LocalizedText<br />
                            EncodingMask: 0x00<br />
                                .... ...0 = has locale information: False<br />
                                .... ..0. = has text: False<br />
                        ApplicationType: Server (0x00000000)<br />
                        GatewayServerUri: [OpcUa Null String]<br />
                        DiscoveryProfileUri: [OpcUa Null String]<br />
                        DiscoveryUrls: Array of String<br />
                            ArraySize: -1<br />
                    ServerCertificate: [OpcUa Null ByteString]<br />
                    MessageSecurityMode: Sign (0x00000002)<br />
                    SecurityPolicyUri: <a href="http://opcfoundation.org/UA/SecurityPolicy#Aes256_Sha256_RsaPss" rel="nofollow" target="_blank">http://opcfoundation.org/UA/SecurityPolicy#Aes256_Sha256_RsaPss</a><br />
                    UserIdentityTokens: Array of UserTokenPolicy<br />
                        ArraySize: 3<br />
                        [0]: UserTokenPolicy<br />
                            PolicyId: anonymous<br />
                            UserTokenType: Anonymous (0x00000000)<br />
                            IssuedTokenType: [OpcUa Null String]<br />
                            IssuerEndpointUrl: [OpcUa Null String]<br />
                            SecurityPolicyUri: [OpcUa Null String]<br />
                        [1]: UserTokenPolicy<br />
                            PolicyId: username<br />
                            UserTokenType: UserName (0x00000001)<br />
                            IssuedTokenType: [OpcUa Null String]<br />
                            IssuerEndpointUrl: [OpcUa Null String]<br />
                            SecurityPolicyUri: <a href="http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256" rel="nofollow" target="_blank">http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256</a><br />
                        [2]: UserTokenPolicy<br />
                            PolicyId: certificate<br />
                            UserTokenType: Certificate (0x00000002)<br />
                            IssuedTokenType: [OpcUa Null String]<br />
                            IssuerEndpointUrl: [OpcUa Null String]<br />
                            SecurityPolicyUri: <a href="http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256" rel="nofollow" target="_blank">http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256</a><br />
                    TransportProfileUri: <a href="http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary" rel="nofollow" target="_blank">http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary</a><br />
                    SecurityLevel: 72<br />
                [6]: EndpointDescription<br />
                    EndpointUrl: opc.tcp://milo.digitalpetri.com:62541/milo<br />
                    Server: ApplicationDescription<br />
                        ApplicationUri: urn:opc:eclipse:milo:opc-ua-demo-server:b5122493-db3c-4d9e-b574-9e3b971f729e<br />
                        ProductUri: [OpcUa Null String]<br />
                        ApplicationName: LocalizedText<br />
                            EncodingMask: 0x00<br />
                                .... ...0 = has locale information: False<br />
                                .... ..0. = has text: False<br />
                        ApplicationType: Server (0x00000000)<br />
                        GatewayServerUri: [OpcUa Null String]<br />
                        DiscoveryProfileUri: [OpcUa Null String]<br />
                        DiscoveryUrls: Array of String<br />
                            ArraySize: -1<br />
                    ServerCertificate: [OpcUa Null ByteString]<br />
                    MessageSecurityMode: SignAndEncrypt (0x00000003)<br />
                    SecurityPolicyUri: <a href="http://opcfoundation.org/UA/SecurityPolicy#Aes256_Sha256_RsaPss" rel="nofollow" target="_blank">http://opcfoundation.org/UA/SecurityPolicy#Aes256_Sha256_RsaPss</a><br />
                    UserIdentityTokens: Array of UserTokenPolicy<br />
                        ArraySize: 3<br />
                        [0]: UserTokenPolicy<br />
                            PolicyId: anonymous<br />
                            UserTokenType: Anonymous (0x00000000)<br />
                            IssuedTokenType: [OpcUa Null String]<br />
                            IssuerEndpointUrl: [OpcUa Null String]<br />
                            SecurityPolicyUri: [OpcUa Null String]<br />
                        [1]: UserTokenPolicy<br />
                            PolicyId: username<br />
                            UserTokenType: UserName (0x00000001)<br />
                            IssuedTokenType: [OpcUa Null String]<br />
                            IssuerEndpointUrl: [OpcUa Null String]<br />
                            SecurityPolicyUri: <a href="http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256" rel="nofollow" target="_blank">http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256</a><br />
                        [2]: UserTokenPolicy<br />
                            PolicyId: certificate<br />
                            UserTokenType: Certificate (0x00000002)<br />
                            IssuedTokenType: [OpcUa Null String]<br />
                            IssuerEndpointUrl: [OpcUa Null String]<br />
                            SecurityPolicyUri: <a href="http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256" rel="nofollow" target="_blank">http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256</a><br />
                    TransportProfileUri: <a href="http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary" rel="nofollow" target="_blank">http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary</a><br />
                    SecurityLevel: 136<br />
            ServerSoftwareCertificates: Array of SignedSoftwareCertificate<br />
                ArraySize: 0<br />
            ServerSignature: SignatureData<br />
                Algorithm: [OpcUa Null String]<br />
                Signature: [OpcUa Null ByteString]<br />
            MaxRequestMessageSize: 2097152</p>
]]></description>
					                    <pubDate>Mon, 13 Apr 2026 18:00:21 +0300</pubDate>
                </item>
				                <item>
                    <title>Bjarne Boström on Connect to server with security mode NONE and user/password</title>
                    <link>https://forum.prosysopc.com/forum/opc-ua-java-sdk/connect-to-server-with-security-mode-none-and-user-password/#p7514</link>
                    <category>OPC UA SDK for Java</category>
                    <guid isPermaLink="true">https://forum.prosysopc.com/forum/opc-ua-java-sdk/connect-to-server-with-security-mode-none-and-user-password/#p7514</guid>
					                        <description><![CDATA[<p>I wrote the previous without noticing the new post.</p>
<p>Thanks. Based on the links you gave would indicate that we sort of have a bug. Though, it will result in the inverse of the problem mentioned in the first post of this topic. In short if CreateSessionResponse EndpointDescriptions do NOT contain a Certificate, then other than Anonymous user wont work, in most cases at least. This is because internally the client side Session will start to use the EndpointDescription from the CreateSessionResponse.</p>
<p>It should be noted that specification-wise it is ok to null certain fields, including the certificate. <a href="https://reference.opcfoundation.org/Core/Part4/v105/docs/5.7.2" rel="nofollow" target="_blank"><a href="https://reference.opcfoundatio" rel="nofollow">https://reference.opcfoundatio</a>.....docs/5.7.2</a>, " It is recommended that Servers only include the server.applicationUri, endpointUrl, securityMode, securityPolicyUri, userIdentityTokens, transportProfileUri and securityLevel with all other parameters set to null or empty. " as the other info is already obtained in GetEndpoints phase. Though our implementation uses the same logic for both GetEndpoints and CreateSessionResponse so it does not null them out.</p>
]]></description>
					                    <pubDate>Mon, 13 Apr 2026 17:56:16 +0300</pubDate>
                </item>
				                <item>
                    <title>Bjarne Boström on Connect to server with security mode NONE and user/password</title>
                    <link>https://forum.prosysopc.com/forum/opc-ua-java-sdk/connect-to-server-with-security-mode-none-and-user-password/#p7513</link>
                    <category>OPC UA SDK for Java</category>
                    <guid isPermaLink="true">https://forum.prosysopc.com/forum/opc-ua-java-sdk/connect-to-server-with-security-mode-none-and-user-password/#p7513</guid>
					                        <description><![CDATA[<p>Hi,</p>
<p>Could you please also show the 'UserIdentityTokens: Array of UserTokenPolicy' as expanded. It is technically possible to define one that doesn't need the certificate. However, in general I wouldn't recommend that as then the password would be transmitted in plaintxt so anyone being able to observe the network also then knows it. The certificates would typically be used even with NONE for the purposes of encrypting user passwords. However, the error you did see would indicate something else than null/NONE was configured for the user token policy, so not 100% sure what happens here.</p>
]]></description>
					                    <pubDate>Mon, 13 Apr 2026 17:31:08 +0300</pubDate>
                </item>
				                <item>
                    <title>rocket science on Connect to server with security mode NONE and user/password</title>
                    <link>https://forum.prosysopc.com/forum/opc-ua-java-sdk/connect-to-server-with-security-mode-none-and-user-password/#p7512</link>
                    <category>OPC UA SDK for Java</category>
                    <guid isPermaLink="true">https://forum.prosysopc.com/forum/opc-ua-java-sdk/connect-to-server-with-security-mode-none-and-user-password/#p7512</guid>
					                        <description><![CDATA[<p>I found the solution.</p>
<p>Milo SDK has not included the ServerCertificate in the CreateSessionRespons - see <a href="https://github.com/eclipse-milo/milo/issues/1693" rel="nofollow" target="_blank"><a href="https://github.com/eclipse-mil" rel="nofollow">https://github.com/eclipse-mil</a>.....ssues/1693</a></p>
<p>The Milo Online Demo Server seemed to use a SDK Version &#060; 1.1.1 - when trying locally with the Milo Demo Server and SDK 1.1.2 it worked, and the CreateSessionResponse included also the Server Certificate.</p>
<p>But one question anyway - is there a way to connect to a server using security mode NONE when the server does not provide a Server Certificate using user/password?</p>
]]></description>
					                    <pubDate>Mon, 13 Apr 2026 17:04:37 +0300</pubDate>
                </item>
				                <item>
                    <title>rocket science on Connect to server with security mode NONE and user/password</title>
                    <link>https://forum.prosysopc.com/forum/opc-ua-java-sdk/connect-to-server-with-security-mode-none-and-user-password/#p7511</link>
                    <category>OPC UA SDK for Java</category>
                    <guid isPermaLink="true">https://forum.prosysopc.com/forum/opc-ua-java-sdk/connect-to-server-with-security-mode-none-and-user-password/#p7511</guid>
					                        <description><![CDATA[<p>Hi,</p>
<p>I'm trying to connect to the Milo Demo Server (opc.tcp://milo.digitalpetri.com:62541/milo) using security mode NONE and user/password</p>
<p>The ProsysBrowser gives me following error:</p>
<p>Bad_CertificateInvalid (code=0x80120000, description="The Server Certificate was null. To enable activating a Session with Username/Password, the Server must provide a Server Certificate that is used for encrypting the password.")</p>
<p>When trying the same with e.g. UaExport it works - so somehow it seems that UaExport can connect using user/password and securityMode NONE without having the ServerCertificate, but Proys Browser cannot.</p>
<p>The reason seems to be that Milo does not send the ServerCertificate on CreateSessionResponse</p>
<p>CreateSessionResponse<br />
    ResponseHeader: ResponseHeader<br />
    SessionId: NodeId<br />
    AuthenticationToken: NodeId<br />
    RevisedSessionTimeout: 30000<br />
    ServerNonce: 3b9a4a200506b3931638903d91e10b161d65861795d02d28499a9b6628b09a1f<br />
    ServerCertificate: [OpcUa Null ByteString]<br />
    ServerEndpoints: Array of EndpointDescription<br />
        ArraySize: 7<br />
        [0]: EndpointDescription<br />
            EndpointUrl: opc.tcp://milo.digitalpetri.com:62541/milo<br />
            Server: ApplicationDescription<br />
            ServerCertificate: [OpcUa Null ByteString]<br />
            MessageSecurityMode: None (0x00000001)<br />
            SecurityPolicyUri: <a href="http://opcfoundation.org/UA/SecurityPolicy#None" rel="nofollow" target="_blank">http://opcfoundation.org/UA/SecurityPolicy#None</a><br />
            UserIdentityTokens: Array of UserTokenPolicy<br />
            TransportProfileUri: <a href="http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary" rel="nofollow" target="_blank">http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary</a><br />
            SecurityLevel: 32<br />
        [1]: EndpointDescription<br />
            EndpointUrl: opc.tcp://milo.digitalpetri.com:62541/milo<br />
            Server: ApplicationDescription<br />
            ServerCertificate: [OpcUa Null ByteString]<br />
            MessageSecurityMode: Sign (0x00000002)<br />
            SecurityPolicyUri: <a href="http://opcfoundation.org/UA/SecurityPolicy#Aes128_Sha256_RsaOaep" rel="nofollow" target="_blank">http://opcfoundation.org/UA/SecurityPolicy#Aes128_Sha256_RsaOaep</a><br />
            UserIdentityTokens: Array of UserTokenPolicy<br />
            TransportProfileUri: <a href="http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary" rel="nofollow" target="_blank">http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary</a><br />
            SecurityLevel: 68<br />
        [2]: EndpointDescription<br />
            EndpointUrl: opc.tcp://milo.digitalpetri.com:62541/milo<br />
            Server: ApplicationDescription<br />
            ServerCertificate: [OpcUa Null ByteString]<br />
            MessageSecurityMode: SignAndEncrypt (0x00000003)<br />
            SecurityPolicyUri: <a href="http://opcfoundation.org/UA/SecurityPolicy#Aes128_Sha256_RsaOaep" rel="nofollow" target="_blank">http://opcfoundation.org/UA/SecurityPolicy#Aes128_Sha256_RsaOaep</a><br />
            UserIdentityTokens: Array of UserTokenPolicy<br />
            TransportProfileUri: <a href="http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary" rel="nofollow" target="_blank">http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary</a><br />
            SecurityLevel: 132<br />
        [3]: EndpointDescription<br />
            EndpointUrl: opc.tcp://milo.digitalpetri.com:62541/milo<br />
            Server: ApplicationDescription<br />
            ServerCertificate: [OpcUa Null ByteString]<br />
            MessageSecurityMode: Sign (0x00000002)<br />
            SecurityPolicyUri: <a href="http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256" rel="nofollow" target="_blank">http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256</a><br />
            UserIdentityTokens: Array of UserTokenPolicy<br />
            TransportProfileUri: <a href="http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary" rel="nofollow" target="_blank">http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary</a><br />
            SecurityLevel: 72<br />
        [4]: EndpointDescription<br />
            EndpointUrl: opc.tcp://milo.digitalpetri.com:62541/milo<br />
            Server: ApplicationDescription<br />
            ServerCertificate: [OpcUa Null ByteString]<br />
            MessageSecurityMode: SignAndEncrypt (0x00000003)<br />
            SecurityPolicyUri: <a href="http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256" rel="nofollow" target="_blank">http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256</a><br />
            UserIdentityTokens: Array of UserTokenPolicy<br />
            TransportProfileUri: <a href="http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary" rel="nofollow" target="_blank">http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary</a><br />
            SecurityLevel: 136<br />
        [5]: EndpointDescription<br />
            EndpointUrl: opc.tcp://milo.digitalpetri.com:62541/milo<br />
            Server: ApplicationDescription<br />
            ServerCertificate: [OpcUa Null ByteString]<br />
            MessageSecurityMode: Sign (0x00000002)<br />
            SecurityPolicyUri: <a href="http://opcfoundation.org/UA/SecurityPolicy#Aes256_Sha256_RsaPss" rel="nofollow" target="_blank">http://opcfoundation.org/UA/SecurityPolicy#Aes256_Sha256_RsaPss</a><br />
            UserIdentityTokens: Array of UserTokenPolicy<br />
            TransportProfileUri: <a href="http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary" rel="nofollow" target="_blank">http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary</a><br />
            SecurityLevel: 72<br />
        [6]: EndpointDescription<br />
            EndpointUrl: opc.tcp://milo.digitalpetri.com:62541/milo<br />
            Server: ApplicationDescription<br />
            ServerCertificate: [OpcUa Null ByteString]<br />
            MessageSecurityMode: SignAndEncrypt (0x00000003)<br />
            SecurityPolicyUri: <a href="http://opcfoundation.org/UA/SecurityPolicy#Aes256_Sha256_RsaPss" rel="nofollow" target="_blank">http://opcfoundation.org/UA/SecurityPolicy#Aes256_Sha256_RsaPss</a><br />
            UserIdentityTokens: Array of UserTokenPolicy<br />
            TransportProfileUri: <a href="http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary" rel="nofollow" target="_blank">http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary</a><br />
            SecurityLevel: 136<br />
    ServerSoftwareCertificates: Array of SignedSoftwareCertificate<br />
    ServerSignature: SignatureData<br />
    MaxRequestMessageSize: 2097152</p>
<p>Is there any possibility to connect using Prosys SDK to the Milo Demo Server (in such a case that there is no Server Certiicate) - or might this a bug on side of the Milo-Server-SDK ?</p>
]]></description>
					                    <pubDate>Mon, 13 Apr 2026 16:48:52 +0300</pubDate>
                </item>
				                <item>
                    <title>Bjarne Boström on Bad_DecodingError (0x80070000) "Decoding halted because of invalid data in the stream."</title>
                    <link>https://forum.prosysopc.com/forum/opc-ua-java-sdk/bad_decodingerror-0x80070000-decoding-halted-because-of-invalid-data-in-the-stream/#p7510</link>
                    <category>OPC UA SDK for Java</category>
                    <guid isPermaLink="true">https://forum.prosysopc.com/forum/opc-ua-java-sdk/bad_decodingerror-0x80070000-decoding-halted-because-of-invalid-data-in-the-stream/#p7510</guid>
					                        <description><![CDATA[<p>That would indicate there is some issue that they wont get decoded, thus Browser basically knows nothing about them. Thus, there is some issue in the latest SDK or with the server in a way that it works with UaExpert (this sometimes happens if there is more than one path to solution). Or (though unlikely here) it could be that there is some feature of OPC UA being used that we do not support yet (some abstract types were semi-recently allowed as Structure fields, though your 'object=[6] 0x000000000000' rules that out as Variant form would be used in the data and it would cause non-0 output).</p>
<p>Is it possible to navigate to your Structure DataType (assuming named UDT_RANGE, based on the output), below Types/DataTypes/BaseDataType/Structure/, and show the value of the DataTypeDefinition Attribute, it should look something like this (/Root/Types/DataTypes/BaseDataType/Structure/AxisInformation):<br />
StructureDefinition [DefaultEncodingId="i=12089", BaseDataType="i=22", StructureType="Structure", Fields="[StructureField [Name="EngineeringUnits", Description="", DataType="i=887", ValueRank="-1", ArrayDimensions="null", MaxStringLength="0", IsOptional="false"], StructureField [Name="EURange", Description="", DataType="i=884", ValueRank="-1", ArrayDimensions="null", MaxStringLength="0", IsOptional="false"], StructureField [Name="Title", Description="", DataType="i=21", ValueRank="-1", ArrayDimensions="null", MaxStringLength="0", IsOptional="false"], StructureField [Name="AxisScaleType", Description="", DataType="i=12077", ValueRank="-1", ArrayDimensions="null", MaxStringLength="0", IsOptional="false"], StructureField [Name="AxisSteps", Description="", DataType="i=11", ValueRank="1", ArrayDimensions="[0]", MaxStringLength="0", IsOptional="false"]]"]. </p>
<p>It is possible that it shows Bad_AttributeIdInvalid (0x80350000) "The attribute is not supported for the specified Node.", then it would mean it uses an older DataTypeDictionary system, though explaining that is a bit more complicated, thus best if you send email to <a href="mailto:jsdk-support@prosysopc.com" target="_blank">jsdk-support@prosysopc.com</a> if that happens (include the node-opcua script, though I cannot promise we would look that).</p>
<p>P.S.<br />
While viewing the DataType node, in the Attribute and References, for the References, you should see forward HasEncoding Reference whose target is "Default Binary", if you expand that tree-table-view node, it should show a NodeId in a namespaceindex that is equivalent to the nsu=urn:localhost:opcua:demo-server, can you see the NamespaceUri if you expand the NodeId, and the value part should be i=1004. That is the value being transmitted in the ExtensionObject and used to link it to the Structure type (and then the DataTypeDefinition tells how to decode it).</p>
]]></description>
					                    <pubDate>Mon, 13 Apr 2026 15:48:25 +0300</pubDate>
                </item>
				    </channel>
	</rss>
