<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	    <channel>
        <title>OPC Foundation - Forum: OPC UA Implementation: Stacks, Tools, and Samples</title>
        <link>https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/</link>
        <description><![CDATA[The Industrial Interoperability Standard™]]></description>
        <generator>Simple:Press Version 6.11.15</generator>
        <atom:link href="https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/rss/" rel="self" type="application/rss+xml"/>
		                <item>
                    <title>Andy Rehn on RAM memory concerns</title>
                    <link>https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/ram-memory-concerns/#p5835</link>
                    <category>OPC UA Implementation: Stacks, Tools, and Samples</category>
                    <guid isPermaLink="true">https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/ram-memory-concerns/#p5835</guid>
					                        <description><![CDATA[<p>Hi, Thanks for your answer! I have studied the MemoryBuffer-files as you suggested.</p>
<p>I have an idea to model static parts (parts that are the same across all controllers) of a controller in a ModelDesign.xml file to utlize the framework as much as possible. As I understand it you get a lot out of the box (such as browsing) and support by the partial generated classes where you can put your implementation code. The static parts are not too extensive and can be cached in PredefinedNodes or similar.</p>
<p>Then treat the dynamic parts (parts that differ from controller to controller) more like the MemoryBuffer with no or sparse caching and custom browsing.  The question is how I can best achieve this? Same or different nodemanager for the two parts? Which nodemanager to use/start off from? Represent dynamic parts with NodeState-derived classes (like MemoryTagState) or custom lightweight classes? Are there cases where it is a good idea to skip using NodeState-derived classes?</p>
<p>I'm getting a bit confused by all different examples, and I find it difficult to become any wiser by reading the documentation. I can't find a user-friendly documentation which can guide me in the correct direction. There are som many different examples starting off from different nodemanager classes or interfaces (CustomNodeManger2, SampleNodeManager, INodeManager, INodeManager2...). It is difficult to get a clear view of the differences between the different nodemanagers. Seems like a tedious task to implement a nodemanager interface from scratch. Dynamic data is sometimes represented by NodeState and somtimes by custom lightweight classes. And so on...</p>
<p>I would really appreciate some help!    </p>
]]></description>
					                    <pubDate>Mon, 21 Sep 2026 16:43:05 -0700</pubDate>
                </item>
				                <item>
                    <title>Etienne Rossignon on Tool used to generate OPC UA node set</title>
                    <link>https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/tool-used-to-generate-opc-ua-node-set/#p5834</link>
                    <category>OPC UA Implementation: Stacks, Tools, and Samples</category>
                    <guid isPermaLink="true">https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/tool-used-to-generate-opc-ua-node-set/#p5834</guid>
					                        <description><![CDATA[<p>An update for anyone who still lands here, since a lot has changed since 2019.</p>
<p>Disclosure first: I am the author of node-opcua and I work at Sterfive, which makes one of the tools below.</p>
<p>1. The OPC Foundation now has its own editor. The UA NodeSet Editor (<a href="https://uanodeseteditor.opcfoundation.org/" target="_blank"><a href="https://uanodeseteditor.opcfou" rel="nofollow">https://uanodeseteditor.opcfou</a>.....ation.org/</a>) is a free web tool to create and edit information models, start from the UA Cloud Library, and export a NodeSet. It can also check a Companion Specification Word document against its NodeSet. Source: <a href="https://github.com/OPCFoundation/UA-NodeSetEditor" target="_blank"><a href="https://github.com/OPCFoundati" rel="nofollow">https://github.com/OPCFoundati</a>.....eSetEditor</a></p>
<p>2. UA-ModelCompiler is still the way to go if you need the generated C# or ANSI C classes the original question was about. Stefan's tutorial above remains a good introduction.</p>
<p>3. If what you need is the NodeSet2.xml itself, another approach is to write the model as text and compile it. That is what we built: OPC UA Modeler takes a small YAML description and generates a standard NodeSet2.xml, with the companion specifications (DI, Machinery, Robotics…) available by alias and the model validated as you type. Because the model is a text file, it diffs, reviews and merges like source code, and can be built in CI.</p>
<pre>namespaceUri: http://acme.example/UA/Pump/
version: 1.0.0</pre>
<pre>namespaces:
- di</pre>
<pre>
objectTypes:
- browseName: PumpType
  subtypeOf: di:DeviceType
  components:
  - browseName: di:ParameterSet
    components:
    - browseName: FlowRate
      dataType: ua:Double</pre>
<p> </p>
<p>To be clear about its limits: it produces NodeSet2.xml, not ModelDesign XML, and it does not generate C# classes. The .NET Standard stack, open62541, node-opcua and the other SDKs load the resulting NodeSet2.xml directly.</p>
<p>The language specification (CC BY 4.0), its JSON Schema and example models are public: <a href="https://github.com/node-opcua/opcua-modeler" target="_blank"><a href="https://github.com/node-opcua/" rel="nofollow">https://github.com/node-opcua/</a>.....ua-modeler</a><br />
A tool-neutral walkthrough of what a NodeSet2.xml contains and the different ways to produce one: <a href="https://opcua-modeler.doc.sterfive.com/docs/guides/create-nodeset2-xml" target="_blank"><a href="https://opcua-modeler.doc.ster" rel="nofollow">https://opcua-modeler.doc.ster</a>.....deset2-xml</a></p>
<p>Etienne</p>
]]></description>
					                    <pubDate>Sat, 19 Sep 2026 23:26:57 -0700</pubDate>
                </item>
				                <item>
                    <title>Alexander Allmendinger on No endpoints discovred</title>
                    <link>https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/no-endpoints-discovred/#p5819</link>
                    <category>OPC UA Implementation: Stacks, Tools, and Samples</category>
                    <guid isPermaLink="true">https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/no-endpoints-discovred/#p5819</guid>
					                        <description><![CDATA[<p>Hello Isabella,</p>
<p>happy to hear that you started working with the CTT to test your product. I assume your problem is something very basic like that the setting has not been stored in the configuration yet, since you haven't clicked on "Apply". You'll find the "Apply" button at the bottom of the settings dialog. Once you applied the configuration change with the endpoint URL the connection should be working fine.</p>
<p>If you are then still facing issues. Please let me know.</p>
<p>Regards,<br />
Alexander Allmendinger</p>
]]></description>
					                    <pubDate>Thu, 23 Jul 2026 21:53:32 -0700</pubDate>
                </item>
				                <item>
                    <title>Isabella Galliza on No endpoints discovred</title>
                    <link>https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/no-endpoints-discovred/#p5818</link>
                    <category>OPC UA Implementation: Stacks, Tools, and Samples</category>
                    <guid isPermaLink="true">https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/no-endpoints-discovred/#p5818</guid>
					                        <description><![CDATA[<p>Hello all!</p>
<p>I'm trying to start a project om CTT, but when I add my Server URL i only receive back No endpoints discovered. The same server works well via UAExpert. Any possible causes and solutions?</p>
]]></description>
					                    <pubDate>Thu, 16 Jul 2026 21:46:57 -0700</pubDate>
                </item>
				                <item>
                    <title>Randy Armstrong on Unable to test method call with UACTT Lite</title>
                    <link>https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/unable-to-test-method-call-with-uactt-lite/#p5814</link>
                    <category>OPC UA Implementation: Stacks, Tools, and Samples</category>
                    <guid isPermaLink="true">https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/unable-to-test-method-call-with-uactt-lite/#p5814</guid>
					                        <description><![CDATA[<p>Ok - if HasEncoding is not present in the Server then the Server is the problem.</p>
<p>Not every client will look for it but it is required if you are returning exchanging instances over the wire.</p>
<p>Specification is fairly clear:</p>
<p><a href="https://reference.opcfoundation.org/specs/OPC-10000-3/5.8.4#:~:text=If%20a%20DataType%20Node%20is%20exposed%20in%20the%20AddressSpace%2C%20it%20shall%20provide%20its%20DataTypeEncodings%20using%20HasEncoding%20References%2E" rel="nofollow" target="_blank"><a href="https://reference.opcfoundatio" rel="nofollow">https://reference.opcfoundatio</a>.....erences%2E</a></p>
]]></description>
					                    <pubDate>Mon, 29 Jun 2026 06:18:18 -0700</pubDate>
                </item>
				                <item>
                    <title>Erik Bijsterveld on Unable to test method call with UACTT Lite</title>
                    <link>https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/unable-to-test-method-call-with-uactt-lite/#p5813</link>
                    <category>OPC UA Implementation: Stacks, Tools, and Samples</category>
                    <guid isPermaLink="true">https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/unable-to-test-method-call-with-uactt-lite/#p5813</guid>
					                        <description><![CDATA[<p>Hi Randy,</p>
<p>We already tested with UAExpert and with that tool we are able to execute the method call. However according to Siemens the method call executed by Opcenter Execution MOM fails because our custom created 'DataType -&#062; BaseDataType -&#062; Structure -&#062; FieldObject' does not return HasEncoding. This is also confirmed when browsing to FieldObject with UAExpert.</p>
<p>Because we now have internally a discussion in whether or not the problem is on the OPC-UA server side or in Siemens Opcenter Connect MOM I wanted to use the UACTT Lite test tool so that it maybe would confirm the feedback of Siemens that the OPC-UA Server is not compliant to the standard.</p>
<p>Is it possible to also answer my initial question if it is possible to test an OPC-UA method call with UACTT Lite?</p>
<p>Regards,</p>
<p>Erik</p>
]]></description>
					                    <pubDate>Sun, 28 Jun 2026 19:26:05 -0700</pubDate>
                </item>
				                <item>
                    <title>Randy Armstrong on Unable to test method call with UACTT Lite</title>
                    <link>https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/unable-to-test-method-call-with-uactt-lite/#p5812</link>
                    <category>OPC UA Implementation: Stacks, Tools, and Samples</category>
                    <guid isPermaLink="true">https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/unable-to-test-method-call-with-uactt-lite/#p5812</guid>
					                        <description><![CDATA[<p>You can use any UA client such as UAExpert to connect to Server and call the method.</p>
<p>If that works it is client side issue.</p>
<p>The issue is you have likely created a DataType Node which is used as an argument in the Method.</p>
<p>This DataType Node needs to have an associated DataTypeEncoding Node. If your Server does not return a HasEncoding reference when the DataType is browsed then that would explain the issue.</p>
]]></description>
					                    <pubDate>Sun, 28 Jun 2026 00:21:46 -0700</pubDate>
                </item>
				                <item>
                    <title>Erik Bijsterveld on Unable to test method call with UACTT Lite</title>
                    <link>https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/unable-to-test-method-call-with-uactt-lite/#p5811</link>
                    <category>OPC UA Implementation: Stacks, Tools, and Samples</category>
                    <guid isPermaLink="true">https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/unable-to-test-method-call-with-uactt-lite/#p5811</guid>
					                        <description><![CDATA[<p>We developed an OPC-UA server for internal use. Our goal is to communicate with this OPC-UA server using an OPC-UA Client adapter of Siemens Opcenter Connect MOM. During tests with MOM we discovered that when we try to call the OPC-UA method we get the following exception "Method Call Exception: The DataType does not have a DefaultBinary Encoding.".</p>
<p>To validate if our OPC-UA server is compliant with the OPC-UA standard I started testing with the 'UACTT Lite' test tool. However as soon as I try to execute a method call test script I get the error CallService does not exist. After some digging I discovered that I do not have the Call.js file which should be in the following location according to the documentation which is included with the 'UACTT Lite' test tool:</p>
<p>Location: <span class="Code">/project&#062;/library/Base/ServiceBased/MethodServiceSet/Call.js</span></p>
<p>So now I'm wondering is it even possible to test an OPC-UA method call with UACTT Lite or is this only supported in the full version?</p>
<p>Any help is appreciated.</p>
<p>Regards,</p>
<p>Erik</p>
]]></description>
					                    <pubDate>Thu, 25 Jun 2026 19:01:36 -0700</pubDate>
                </item>
				                <item>
                    <title>Randy Armstrong on Model Compiler usage for client side</title>
                    <link>https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/model-compiler-usage-for-client-side/#p5796</link>
                    <category>OPC UA Implementation: Stacks, Tools, and Samples</category>
                    <guid isPermaLink="true">https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/model-compiler-usage-for-client-side/#p5796</guid>
					                        <description><![CDATA[<p>*.DataTypes.cs and *.Constants.cs are useful to clients.</p>
<p>*.Classes.cs is server only.</p>
]]></description>
					                    <pubDate>Sun, 14 Jun 2026 22:21:20 -0700</pubDate>
                </item>
				                <item>
                    <title>cikniv877@gmail.com on Model Compiler usage for client side</title>
                    <link>https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/model-compiler-usage-for-client-side/#p5795</link>
                    <category>OPC UA Implementation: Stacks, Tools, and Samples</category>
                    <guid isPermaLink="true">https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/model-compiler-usage-for-client-side/#p5795</guid>
					                        <description><![CDATA[<p>I am trying to understand the use cases for Model Compiler (<a href="https://github.com/opcfoundation/ua-modelcompiler" rel="nofollow" target="_blank"><a href="https://github.com/opcfoundati" rel="nofollow">https://github.com/opcfoundati</a>.....elcompiler</a> ) for the OPC UA client side. </p>
<p>My understanding is that the Model Compiler will generate classes for UA datatypes, and also for object types and variable types.</p>
<p>And I can use the datatypes classes on both the server side and client side (in my case with the .NET stack/SDK).</p>
<p>But the object type and variable type classes are for server side only, right? For them, there is nothing generated for client side, right?</p>
<p>Thanks for clarification.</p>
]]></description>
					                    <pubDate>Sun, 14 Jun 2026 19:15:21 -0700</pubDate>
                </item>
				                <item>
                    <title>Randy Armstrong on RAM memory concerns</title>
                    <link>https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/ram-memory-concerns/#p5790</link>
                    <category>OPC UA Implementation: Stacks, Tools, and Samples</category>
                    <guid isPermaLink="true">https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/ram-memory-concerns/#p5790</guid>
					                        <description><![CDATA[<p>The generated C# classes are great for small servers or if a rapid prototype is needed, however, if your production application has high requirements you will likely want to invest a NodeManager that is designed for your data.</p>
<p>The understand the value of this approach you must see a UA information model as a window on your data rather than a database.</p>
<p>What this means is you do not need represent a device as 10+ nodes in memory. You instead build a NodeId structure that allows to response to Browse/Read/Write/Call on demand.</p>
<p>This means the only thing you actually need in memory is a structure that describes your device. All of the information associated with various Nodes used to represent your device are collected on demand by merging the static model with the device specific data..</p>
<p>To illustrate this concept a NodeManager for 100 million Nodes was implemented here:</p>
<p><a href="https://github.com/OPCFoundation/UA-.NETStandard/tree/master/Applications/Quickstarts.Servers/MemoryBuffer" rel="nofollow" target="_blank"><a href="https://github.com/OPCFoundati" rel="nofollow">https://github.com/OPCFoundati</a>.....moryBuffer</a></p>
]]></description>
					                    <pubDate>Thu, 21 May 2026 09:02:01 -0700</pubDate>
                </item>
				                <item>
                    <title>Andy Rehn on RAM memory concerns</title>
                    <link>https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/ram-memory-concerns/#p5788</link>
                    <category>OPC UA Implementation: Stacks, Tools, and Samples</category>
                    <guid isPermaLink="true">https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/ram-memory-concerns/#p5788</guid>
					                        <description><![CDATA[<p>Hi,</p>
<p>We are developing an OPC UA server based on on the library 'OPCFoundation.NetStandard.Opc.Ua.Server'. The server exposes data of building automation controllers (up to 500 devices). We are now a bit worried that the address space will take up too much RAM, since each object is represented by a number of nodes that must be stored in memory.</p>
<p>What generally consumes the most memory in an OPC UA server? Is it the storage of the address space, or other factors such as subscriptions and monitored items?</p>
<p>Please guide us regarding memory consumption in an OPC UA server. Maybe we're worrying about nothing?</p>
<p> </p>
<p>How we are currently working:</p>
<p>We model our object types in a ModelDesign.xml file and then compile it with ModelCompiler. Then we load the .uanodes file generated by the compiler in our node manager class. To add an object (set of nodes) to the address space of the server we create an object instance of one of the classes that are generated by the compiler and then call CreateNode with that instance as inparameter (we also create references). As we understand the address space (all nodes) are cached in CustomNodeManager2::m_predefinedNodes.</p>
]]></description>
					                    <pubDate>Wed, 20 May 2026 16:35:08 -0700</pubDate>
                </item>
				                <item>
                    <title>Donald Van Raalte on OPC UA Client Application Certificate Security Profile cannot be found</title>
                    <link>https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/opc-ua-client-application-certificate-security-profile-cannot-be-found/#p5781</link>
                    <category>OPC UA Implementation: Stacks, Tools, and Samples</category>
                    <guid isPermaLink="true">https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/opc-ua-client-application-certificate-security-profile-cannot-be-found/#p5781</guid>
					                        <description><![CDATA[<p>Found a resolution from <a href="https://github.com/OPCFoundation/UA-.NETStandard/discussions/3697" target="_blank">this github dicussion</a></p>
]]></description>
					                    <pubDate>Thu, 23 Apr 2026 02:04:01 -0700</pubDate>
                </item>
				                <item>
                    <title>Donald Van Raalte on OPC UA Client Application Certificate Security Profile cannot be found</title>
                    <link>https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/opc-ua-client-application-certificate-security-profile-cannot-be-found/#p5780</link>
                    <category>OPC UA Implementation: Stacks, Tools, and Samples</category>
                    <guid isPermaLink="true">https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/opc-ua-client-application-certificate-security-profile-cannot-be-found/#p5780</guid>
					                        <description><![CDATA[<p>Been trying to use certificate auth to connect to a series of Honeywell Experion PKS OPC UA servers.</p>
<p>Was working fine with anonymous/basic auth during local testing, but I'm running into failures now trying to connect to a customer OPC UA server leveraging certificates.</p>
<p>Looking for any guidance, as both this auth problem and certificate problems in general are a little out of my depth.</p>
<p>I am not using an XML config for the application configuration, I have most of it hard coded with some choices exposed through default ASP.NET Core `IConfiguration`.</p>
<p>I thought that using a single certificate would be better than allowing the application to generate its own on session handshake, so I used an F# script to generate a certificate and provided the `pem` and `der` to the customer to add to the `trusted` folder of their OPC UA server. I'm pulling in the `.pfx` file to use during the handshake.</p>
<p>Any help or guidance towards documentation/examples to help me resolve this problem would be greatly appreciated!</p>
<p>Here is the log message/exception that I'm getting:<br />
```<br />
info: ReachPapermakingClient.OpcUaClientFactoryV2[0]<br />
Loaded OPC UA client certificate: Subject=CN=ProjectName, O=CompanyName, OU=OPC UA Client, Thumbprint=12345abcdefg, ValidTo=04/13/2036 10:44:59<br />
info: ReachPapermakingClient.OpcUaClientFactoryV2[0]<br />
OPC UA application configuration validated</p>
<p>info: ReachPapermakingClient.OpcUaClientFactoryV2[0]<br />
Connecting: Endpoint=opc.tcp://myendpoint.com:4840, Session=REACH_Papermaking_Client_Primary, Auth=Username (opc_test)</p>
<p>info: ReachPapermakingClient.OpcUaClientFactoryV2[0]<br />
Selected endpoint: opc.tcp://myendpoint.com:4840, SecurityPolicy=https://opcfoundation.org/UA/SecurityPolicy#Aes256_Sha256_RsaPss, SecurityMode=SignAndEncrypt</p>
<p>info: ReachPapermakingClient.OpcUaClientFactoryV2[0]<br />
Using username/password identity for user: opc_test</p>
<p>Unhandled exception. Opc.Ua.ServiceResultException: ApplicationCertificate for the security profile <a href="https://opcfoundation.org/UA/SecurityPolicy#Aes256_Sha256_RsaPss" target="_blank">https://opcfoundation.org/UA/SecurityPolicy#Aes256_Sha256_RsaPss</a> cannot be found.<br />
at Opc.Ua.Client.Session.LoadCertificateAsync(ApplicationConfiguration configuration, String securityProfile)<br />
at Opc.Ua.Client.Session.CreateChannelAsync(ApplicationConfiguration configuration,<br />
ITransportWaitingConnection connection, ConfiguredEndpoint endpoint, Boolean updateBeforeConnect, Boolean checkDomain, CancellationToken ct)<br />
at Opc.Ua.Client.Session.CreateAsync(ISessionInstantiator sessionInstantiator, ApplicationConfiguration configuration, ITransportWaitingConnection connection, ConfiguredEndpoint endpoint, Boolean updateBeforeConnect, Boolean checkDomain, String sessionName, UInt32 sessionTimeout, IUserIdentity identity, IList`1 preferredLocales, CancellationToken ct)<br />
at Opc.Ua.Client.DefaultSessionFactory.CreateAsync(ApplicationConfiguration configuration, ConfiguredEndpoint endpoint, Boolean updateBeforeConnect, Boolean checkDomain, String sessionName, UInt32 sessionTimeout, IUserIdentity identity, IList`1 preferredLocales, CancellationToken ct)<br />
at Opc.Ua.Client.TraceableSessionFactory.CreateAsync(ApplicationConfiguration configuration, ConfiguredEndpoint endpoint, Boolean updateBeforeConnect, String sessionName, UInt32 sessionTimeout, IUserIdentity identity, IList`1 preferredLocales, CancellationToken ct)<br />
at ReachPapermakingClient.OpcUaClientFactoryV2.CreateClientAsync(ApplicationConfiguration config, String endpointUrl, String sessionName) in D:\agent\_work\3348\s\OpcUa\OpcUaClientFactoryV2.cs:line 206<br />
at ReachPapermakingClient.OpcUaClientFactoryV2.CreateRedundantOpcUaClient(String sessionName, ILogger`1 logger) in D:\agent\_work\3348\s\OpcUa\OpcUaClientFactoryV2.cs:line 58<br />
at Program.&#060;Main&#062;$(String[] args) in D:\agent\_work\3348\s\Worker\Program.cs:line 74<br />
at Program.&#060;Main&#062;(String[] args)<br />
Aborted<br />
```</p>
<p>Here is the application configuration that I'm using to build out the OPC UA Client:<br />
```cs<br />
private ApplicationConfiguration BuildApplicationConfiguration()<br />
{<br />
var certificate = LoadClientCertificate();</p>
<p>return new ApplicationConfiguration<br />
{<br />
ApplicationName = ApplicationName,<br />
ApplicationUri = ApplicationUri,<br />
ApplicationType = ApplicationType.Client,<br />
SecurityConfiguration = new SecurityConfiguration<br />
{<br />
ApplicationCertificate = new CertificateIdentifier<br />
{<br />
StoreType = "Directory",<br />
StorePath = GetCertificateStorePath("own"),<br />
SubjectName = certificate.Subject,<br />
Certificate = certificate<br />
},<br />
AutoAcceptUntrustedCertificates = true,<br />
RejectSHA1SignedCertificates = false,<br />
RejectUnknownRevocationStatus = false,<br />
AddAppCertToTrustedStore = true,<br />
TrustedPeerCertificates = new CertificateTrustList<br />
{<br />
StoreType = "Directory",<br />
StorePath = GetCertificateStorePath("trusted")<br />
},<br />
TrustedIssuerCertificates = new CertificateTrustList<br />
{<br />
StoreType = "Directory",<br />
StorePath = GetCertificateStorePath("issuer")<br />
},<br />
RejectedCertificateStore = new CertificateStoreIdentifier<br />
{<br />
StoreType = "Directory",<br />
StorePath = GetCertificateStorePath("rejected")<br />
}<br />
},<br />
TransportConfigurations = new TransportConfigurationCollection(),<br />
TransportQuotas = new TransportQuotas { OperationTimeout = 30_000 },<br />
ClientConfiguration = new ClientConfiguration { DefaultSessionTimeout = 60_000 },<br />
};<br />
}<br />
```</p>
<p>Here is the F# script that is used to create the cert that we're using (in case we need to embed the security profile in the generation somehow? Again, i have no idea here)</p>
<p>```fs<br />
let applicationName = "REACH_Papermaking"<br />
let applicationUri = "urn:REACH_Papermaking:OpcUaClient"<br />
let subjectName = "CN=ProjectName, O=CompanyName, OU=OPC UA Client"</p>
<p>let outputDir =<br />
let dir = Path.Combine(__SOURCE_DIRECTORY__, "..", "Worker", "Certificates")<br />
let dir = Path.GetFullPath(dir)<br />
Directory.CreateDirectory(dir) &#124;&#062; ignore<br />
dir</p>
<p>let lifetimeMonths = uint16 (10 * 12)</p>
<p>let cert =<br />
CertificateFactory<br />
.CreateCertificate(applicationUri, applicationName, subjectName, null)<br />
.SetNotBefore(DateTime.UtcNow.AddDays(-1.0))<br />
.SetLifeTime(lifetimeMonths)<br />
.SetHashAlgorithm(X509Utils.GetRSAHashAlgorithmName(uint32 CertificateFactory.DefaultHashSize))<br />
.SetRSAKeySize(CertificateFactory.DefaultKeySize)<br />
.CreateForRSA()</p>
<p>let derPath = Path.Combine(outputDir, $"{applicationName}.der")<br />
File.WriteAllBytes(derPath, cert.RawData)<br />
let pfxPath = Path.Combine(outputDir, $"{applicationName}.pfx")<br />
File.WriteAllBytes(pfxPath, cert.Export(X509ContentType.Pfx))<br />
let pemPath = Path.Combine(outputDir, $"{applicationName}.pem")<br />
File.WriteAllText(pemPath, cert.ExportCertificatePem())</p>
<p>exit 0<br />
```</p>
]]></description>
					                    <pubDate>Wed, 22 Apr 2026 07:19:42 -0700</pubDate>
                </item>
				                <item>
                    <title>Gianfrancesco Aurecchia on PHP or Javascript implementation</title>
                    <link>https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/php-or-javascript-implementation/#p5779</link>
                    <category>OPC UA Implementation: Stacks, Tools, and Samples</category>
                    <guid isPermaLink="true">https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/php-or-javascript-implementation/#p5779</guid>
					                        <description><![CDATA[<p>Hi,</p>
<p>Just wanted to add an option that wasn't available back in 2016: php-opcua (<a href="https://www.php-opcua.com" target="_blank">https://www.php-opcua.com</a>/) is a pure-PHP OPC UA client that works on Linux with no native extensions required — just composer require php-opcua/opcua-client.</p>
<p>It supports read/write, browse, subscriptions, and 10 security policies, and has dedicated packages for Laravel and Symfony. MIT licensed and open source.</p>
<p>Should be a good fit for the Linux use case mentioned in this thread.</p>
<p>Cheers</p>
]]></description>
					                    <pubDate>Mon, 20 Apr 2026 19:29:21 -0700</pubDate>
                </item>
				    </channel>
	</rss>
