<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>Andrzej Chybicki, Autor w Inero Software - Software Consulting</title>
	<atom:link href="https://inero-software.com/author/inero/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description>We unleash innovations using cutting-edge technologies, modern design and AI</description>
	<lastBuildDate>Mon, 29 Dec 2025 10:18:26 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://inero-software.com/wp-content/uploads/2018/11/inero-logo-favicon.png</url>
	<title>Andrzej Chybicki, Autor w Inero Software - Software Consulting</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">153509928</site>	<item>
		<title>Keycloak Deployment Auditing – General Scope and Guidelines</title>
		<link>https://inero-software.com/keycloak-deployment-auditing-general-scope-and-guidelines/</link>
		
		<dc:creator><![CDATA[Andrzej Chybicki]]></dc:creator>
		<pubDate>Mon, 29 Dec 2025 10:08:56 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Company]]></category>
		<category><![CDATA[Keycloak]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[authorization server audit]]></category>
		<category><![CDATA[client-side OAuth security]]></category>
		<category><![CDATA[dentity and access management audit]]></category>
		<category><![CDATA[enterprise Keycloak deployment]]></category>
		<category><![CDATA[Keycloak audit best practices]]></category>
		<category><![CDATA[Keycloak client configuration]]></category>
		<category><![CDATA[Keycloak deployment auditing]]></category>
		<category><![CDATA[Keycloak IAM audit]]></category>
		<category><![CDATA[Keycloak security audit]]></category>
		<category><![CDATA[token validation best practices]]></category>
		<guid isPermaLink="false">https://inero-software.com/?p=8306</guid>

					<description><![CDATA[<p>Keycloak Deployment Auditing – General Scope and Guidelines Practical lessons from auditing multi-realm, multi-client Keycloak environments in medium and large organizations  1. Introduction In medium and large enterprises, Keycloak deployments rarely follow a simple “one realm – one application” pattern. In reality, such environments typically consist of multiple realms reflecting&#8230;</p>
<p>Artykuł <a href="https://inero-software.com/keycloak-deployment-auditing-general-scope-and-guidelines/">Keycloak Deployment Auditing – General Scope and Guidelines</a> pochodzi z serwisu <a href="https://inero-software.com">Inero Software - Software Consulting</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="8306" class="elementor elementor-8306" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-2f79978 e-flex e-con-boxed e-con e-parent" data-id="2f79978" data-element_type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-d183de2 e-con-full e-flex e-con e-child" data-id="d183de2" data-element_type="container">
				</div>
		<div class="elementor-element elementor-element-b58a909 e-con-full e-flex e-con e-child" data-id="b58a909" data-element_type="container">
				<div class="elementor-element elementor-element-1e33c8a elementor-widget elementor-widget-text-editor" data-id="1e33c8a" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h1>Keycloak Deployment Auditing – General Scope and Guidelines</h1><blockquote><h5 style="text-align: center;">Practical lessons from auditing multi-realm, multi-client Keycloak environments in medium and large organizations</h5></blockquote>						</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-c9cf0b5 e-con-full e-flex e-con e-child" data-id="c9cf0b5" data-element_type="container">
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-5ee1ead e-flex e-con-boxed e-con e-parent" data-id="5ee1ead" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-99d9ce5 elementor-widget elementor-widget-spacer" data-id="99d9ce5" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-0de96d9 e-flex e-con-boxed e-con e-parent" data-id="0de96d9" data-element_type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-ecdd67e e-con-full e-flex e-con e-child" data-id="ecdd67e" data-element_type="container">
				</div>
		<div class="elementor-element elementor-element-1fed69f e-con-full e-flex e-con e-child" data-id="1fed69f" data-element_type="container">
				<div class="elementor-element elementor-element-c07326c elementor-widget elementor-widget-text-editor" data-id="c07326c" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h2> 1. Introduction</h2><p class="MsoNormal"><span lang="EN-US">In medium and large enterprises, Keycloak deployments rarely follow a simple “one realm – one application” pattern. In reality, such environments typically consist of multiple realms reflecting organizational structures, environments, or business domains, alongside dozens or even hundreds of client applications.</span></p><p class="MsoNormal"><span lang="EN-US"> </span></p><p class="MsoNormal"><span lang="EN-US">These clients often include web frontends, backend services, machine-to-machine integrations, and legacy systems, all maintained by different teams with varying levels of IAM expertise. As a result, Identity and Access Management quickly becomes a shared responsibility rather than a centrally controlled component.</span></p><blockquote><p>“A Keycloak audit is not about verifying settings in the admin console — it is about understanding how identity, applications, and security decisions interact at scale.”</p></blockquote><p class="MsoNormal"><span lang="EN-US">The primary goal of a Keycloak deployment audit is therefore not to “find flaws in Keycloak itself”, but to assess whether the entire authentication and authorization ecosystem is secure, coherent, and aligned with modern OAuth 2.1 and OpenID Connect best practices.</span></p><p class="MsoNormal"><span lang="EN-US"><a href="https://inero-software.com/keycloak-migration-made-easy-tips-and-best-practices/">From our experience auditing complex enterprise IAM landscapes</a>, a comprehensive Keycloak security audit focuses on three complementary objectives:</span></p><ul><li style="list-style-type: none;"><ul><li class="MsoNormal"><span lang="EN-US">evaluating the configuration of the Keycloak Authorization Server,</span></li><li class="MsoNormal"><span lang="EN-US">reviewing how client applications integrate with Keycloak,</span></li><li class="MsoNormal"><span lang="EN-US">identifying security risks emerging from the interaction between both sides.</span></li></ul></li></ul><p class="MsoNormal"><span lang="EN-US"> </span></p><p class="MsoNormal"><span lang="EN-US">This holistic approach is essential, as many real-world security issues do not stem from a single misconfiguration, but from subtle inconsistencies across multiple realms, clients, and applications.</span></p><p class="MsoNormal"><span lang="EN-US"> </span></p><div align="center"> </div>						</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-311be98 e-con-full e-flex e-con e-child" data-id="311be98" data-element_type="container">
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-79ba960 e-flex e-con-boxed e-con e-parent" data-id="79ba960" data-element_type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-e28818b e-con-full e-flex e-con e-child" data-id="e28818b" data-element_type="container">
				</div>
		<div class="elementor-element elementor-element-ad54fa6 e-con-full e-flex e-con e-child" data-id="ad54fa6" data-element_type="container">
				<div class="elementor-element elementor-element-ff385ae elementor-widget elementor-widget-text-editor" data-id="ff385ae" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p style="text-align: center;"><strong>OVERALL RISK SEVERITY (ORS) MODEL</strong></p><div align="center"><table class="MsoNormalTable" style="width: 423.1pt;" border="1" width="564" cellspacing="0" cellpadding="0"><tbody><tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes; height: 12.6pt;"><td style="width: 423.1pt; background: #98afc7; padding: 5.75pt 5.4pt; height: 12.6pt; border: 1.5pt solid #cdcdcd;" colspan="5" width="564"><p class="MsoNormal" style="margin-bottom: 0cm; text-align: center; line-height: normal;" align="center"><b><span lang="EN-US" style="font-family: 'Calibri',sans-serif; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-hansi-theme-font: major-latin; mso-bidi-theme-font: major-latin; color: black;">ORS</span></b></p></td></tr><tr style="mso-yfti-irow: 1; height: 1.0pt;"><td style="width: 85.85pt; border-right: 1.5pt solid #cdcdcd; border-bottom: 1.5pt solid #cdcdcd; border-left: 1.5pt solid #cdcdcd; border-top-width: initial; border-top-style: none; padding: 5.75pt 5.4pt; height: 1pt;" rowspan="4" width="114"><p class="MsoNormal" style="margin-bottom: 0cm; text-align: center; line-height: normal;" align="center"><b><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; color: black;">Impact</span></b></p></td><td style="width: 85.9pt; border-style: none solid solid none; border-bottom-color: #cdcdcd; border-right-color: #cdcdcd; background: #98afc7; padding: 5.75pt 5.4pt; height: 1pt; border-width: initial 1.5pt 1.5pt initial;" width="115"><p class="MsoNormal" style="margin-bottom: 0cm; text-align: center; line-height: normal;" align="center"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; color: black;">HIGH</span></p></td><td style="width: 85.9pt; border-style: none solid solid none; border-bottom-color: #cdcdcd; border-right-color: #cdcdcd; background: orange; padding: 5.75pt 5.4pt; height: 1pt; border-width: initial 1.5pt 1.5pt initial;" width="115"><p class="MsoNormal" style="margin-bottom: 0cm; text-align: center; line-height: normal;" align="center"><span lang="EN-US" style="font-family: 'Calibri',sans-serif; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-hansi-theme-font: major-latin; mso-bidi-theme-font: major-latin; color: black;">Medium</span></p></td><td style="width: 85.9pt; border-style: none solid solid none; border-bottom-color: #cdcdcd; border-right-color: #cdcdcd; background: red; padding: 5.75pt 5.4pt; height: 1pt; border-width: initial 1.5pt 1.5pt initial;" width="115"><p class="MsoNormal" style="margin-bottom: 0cm; text-align: center; line-height: normal;" align="center"><span lang="EN-US" style="font-family: 'Calibri',sans-serif; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-hansi-theme-font: major-latin; mso-bidi-theme-font: major-latin; color: black;">High</span></p></td><td style="width: 79.55pt; border-style: none solid solid none; border-bottom-color: #cdcdcd; border-right-color: #cdcdcd; background: pink; padding: 5.75pt 5.4pt; height: 1pt; border-width: initial 1.5pt 1.5pt initial;" width="106"><p class="MsoNormal" style="margin-bottom: 0cm; text-align: center; line-height: normal;" align="center"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; color: black;">Critical</span></p></td></tr><tr style="mso-yfti-irow: 2; height: 9.3pt;"><td style="width: 85.9pt; border-style: none solid solid none; border-bottom-color: #cdcdcd; border-right-color: #cdcdcd; background: #98afc7; padding: 5.75pt 5.4pt; height: 9.3pt; border-width: initial 1.5pt 1.5pt initial;" width="115"><p class="MsoNormal" style="margin-bottom: 0cm; text-align: center; line-height: normal;" align="center"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; color: black;">MEDIUM</span></p></td><td style="width: 85.9pt; border-style: none solid solid none; border-bottom-color: #cdcdcd; border-right-color: #cdcdcd; background: yellow; padding: 5.75pt 5.4pt; height: 9.3pt; border-width: initial 1.5pt 1.5pt initial;" width="115"><p class="MsoNormal" style="margin-bottom: 0cm; text-align: center; line-height: normal;" align="center"><span lang="EN-US" style="font-family: 'Calibri',sans-serif; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-hansi-theme-font: major-latin; mso-bidi-theme-font: major-latin; color: black;">Low</span></p></td><td style="width: 85.9pt; border-style: none solid solid none; border-bottom-color: #cdcdcd; border-right-color: #cdcdcd; background: orange; padding: 5.75pt 5.4pt; height: 9.3pt; border-width: initial 1.5pt 1.5pt initial;" width="115"><p class="MsoNormal" style="margin-bottom: 0cm; text-align: center; line-height: normal;" align="center"><span lang="EN-US" style="font-family: 'Calibri',sans-serif; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-hansi-theme-font: major-latin; mso-bidi-theme-font: major-latin; color: black;">Medium</span></p></td><td style="width: 79.55pt; border-style: none solid solid none; border-bottom-color: #cdcdcd; border-right-color: #cdcdcd; background: red; padding: 5.75pt 5.4pt; height: 9.3pt; border-width: initial 1.5pt 1.5pt initial;" width="106"><p class="MsoNormal" style="margin-bottom: 0cm; text-align: center; line-height: normal;" align="center"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; color: black;">High</span></p></td></tr><tr style="mso-yfti-irow: 3; height: 2.1pt;"><td style="width: 85.9pt; border-style: none solid solid none; border-bottom-color: #cdcdcd; border-right-color: #cdcdcd; background: #98afc7; padding: 5.75pt 5.4pt; height: 2.1pt; border-width: initial 1.5pt 1.5pt initial;" width="115"><p class="MsoNormal" style="margin-bottom: 0cm; text-align: center; line-height: normal;" align="center"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; color: black;">LOW</span></p></td><td style="width: 85.9pt; border-style: none solid solid none; border-bottom-color: #cdcdcd; border-right-color: #cdcdcd; background: lightgreen; padding: 5.75pt 5.4pt; height: 2.1pt; border-width: initial 1.5pt 1.5pt initial;" width="115"><p class="MsoNormal" style="margin-bottom: 0cm; text-align: center; line-height: normal;" align="center"><span lang="EN-US" style="font-family: 'Calibri',sans-serif; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-hansi-theme-font: major-latin; mso-bidi-theme-font: major-latin; color: black;">Note</span></p></td><td style="width: 85.9pt; border-style: none solid solid none; border-bottom-color: #cdcdcd; border-right-color: #cdcdcd; background: yellow; padding: 5.75pt 5.4pt; height: 2.1pt; border-width: initial 1.5pt 1.5pt initial;" width="115"><p class="MsoNormal" style="margin-bottom: 0cm; text-align: center; line-height: normal;" align="center"><span lang="EN-US" style="font-family: 'Calibri',sans-serif; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-hansi-theme-font: major-latin; mso-bidi-theme-font: major-latin; color: black;">Low</span></p></td><td style="width: 79.55pt; border-style: none solid solid none; border-bottom-color: #cdcdcd; border-right-color: #cdcdcd; background: orange; padding: 5.75pt 5.4pt; height: 2.1pt; border-width: initial 1.5pt 1.5pt initial;" width="106"><p class="MsoNormal" style="margin-bottom: 0cm; text-align: center; line-height: normal;" align="center"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; color: black;">Medium</span></p></td></tr><tr style="mso-yfti-irow: 4; height: 1.0pt;"><td style="width: 85.9pt; border-style: none solid solid none; border-bottom-color: #cdcdcd; border-right-color: #cdcdcd; background: #98afc7; padding: 5.75pt 5.4pt; height: 1pt; border-width: initial 1.5pt 1.5pt initial;" width="115"><p class="MsoNormal" style="margin-bottom: 0cm; text-align: center; line-height: normal;" align="center"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; color: black;"> </span></p></td><td style="width: 85.9pt; border-style: none solid solid none; border-bottom-color: #cdcdcd; border-right-color: #cdcdcd; background: #98afc7; padding: 5.75pt 5.4pt; height: 1pt; border-width: initial 1.5pt 1.5pt initial;" width="115"><p class="MsoNormal" style="margin-bottom: 0cm; text-align: center; line-height: normal;" align="center"><span lang="EN-US" style="font-family: 'Calibri',sans-serif; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-hansi-theme-font: major-latin; mso-bidi-theme-font: major-latin; color: black;">LOW</span></p></td><td style="width: 85.9pt; border-style: none solid solid none; border-bottom-color: #cdcdcd; border-right-color: #cdcdcd; background: #98afc7; padding: 5.75pt 5.4pt; height: 1pt; border-width: initial 1.5pt 1.5pt initial;" width="115"><p class="MsoNormal" style="margin-bottom: 0cm; text-align: center; line-height: normal;" align="center"><span lang="EN-US" style="font-family: 'Calibri',sans-serif; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-hansi-theme-font: major-latin; mso-bidi-theme-font: major-latin; color: black;">MEDIUM</span></p></td><td style="width: 79.55pt; border-style: none solid solid none; border-bottom-color: #cdcdcd; border-right-color: #cdcdcd; background: #98afc7; padding: 5.75pt 5.4pt; height: 1pt; border-width: initial 1.5pt 1.5pt initial;" width="106"><p class="MsoNormal" style="margin-bottom: 0cm; text-align: center; line-height: normal;" align="center"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; color: black;">HIGH</span></p></td></tr><tr style="mso-yfti-irow: 5; mso-yfti-lastrow: yes; height: .9pt;"><td style="width: 85.85pt; border-style: none solid none none; border-right-color: #cdcdcd; padding: 5.75pt 5.4pt; height: 0.9pt; border-width: initial 1.5pt initial initial;" width="114"><p class="MsoNormal" style="margin-bottom: 0cm; text-align: center; line-height: normal;" align="center"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; color: black;"> </span></p></td><td style="width: 337.25pt; border-style: none solid solid none; border-bottom-color: #cdcdcd; border-right-color: #cdcdcd; padding: 5.75pt 5.4pt; height: 0.9pt; border-width: initial 1.5pt 1.5pt initial;" colspan="4" width="450"><p class="MsoNormal" style="margin-bottom: 0cm; text-align: center; line-height: normal;" align="center"><b><span lang="EN-US" style="font-family: 'Calibri',sans-serif; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-hansi-theme-font: major-latin; mso-bidi-theme-font: major-latin; color: black;">Likelihood</span></b></p></td></tr></tbody></table><p class="MsoNormal"> </p></div>						</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-4ca23e0 e-con-full e-flex e-con e-child" data-id="4ca23e0" data-element_type="container">
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-f5cdcc2 e-flex e-con-boxed e-con e-parent" data-id="f5cdcc2" data-element_type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-25853b2 e-con-full e-flex e-con e-child" data-id="25853b2" data-element_type="container">
				</div>
		<div class="elementor-element elementor-element-cc333e3 e-con-full e-flex e-con e-child" data-id="cc333e3" data-element_type="container">
				<div class="elementor-element elementor-element-205a0d1 elementor-widget elementor-widget-text-editor" data-id="205a0d1" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p class="MsoNormal"><span lang="EN-US"> To prioritize findings in a meaningful and actionable way, audit results are typically classified using a risk-based approach inspired by OWASP methodologies. Each finding is evaluated as a combination of:</span></p><ul><li style="list-style-type: none;"><ul><li class="MsoNormal"> likelihood of exploitation, </li><li class="MsoNormal">potential impact on confidentiality, integrity, and availability.</li></ul></li></ul><p class="MsoNormal"><span lang="EN-US"> </span></p><p class="MsoNormal"><span lang="EN-US">This allows organizations to distinguish between:</span></p><ul><li style="list-style-type: none;"><ul><li class="MsoNormal"> critical risks with immediate business impact, </li><li class="MsoNormal">medium and low risks related to configuration hardening and attack surface reduction,</li><li class="MsoNormal"> best-practice recommendations aimed at long-term security maturity.</li></ul></li></ul>						</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-75921b3 e-con-full e-flex e-con e-child" data-id="75921b3" data-element_type="container">
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-946a336 e-flex e-con-boxed e-con e-parent" data-id="946a336" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-e26da36 elementor-widget elementor-widget-spacer" data-id="e26da36" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-fde5878 e-flex e-con-boxed e-con e-parent" data-id="fde5878" data-element_type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-90ba2d6 e-con-full e-flex e-con e-child" data-id="90ba2d6" data-element_type="container">
				</div>
		<div class="elementor-element elementor-element-b22a03b e-con-full e-flex e-con e-child" data-id="b22a03b" data-element_type="container">
				<div class="elementor-element elementor-element-69899c9 elementor-widget elementor-widget-text-editor" data-id="69899c9" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h3><span lang="EN-US">Keycloak-side</span><b><span lang="EN-US"> audit – known patterns, real-world consequences</span></b></h3><p><b><span lang="EN-US"> </span></b></p><p class="MsoNormal"><span lang="EN-US"><a href="https://inero-software.com/best-keycloak-practices/">Configuration aspects of Keycloak itself are well documented and widely discussed in official  documentation and community guidelines</a>. Nevertheless, real-world audits of large-scale deployments consistently reveal recurring issues such as:</span></p><ul><li style="list-style-type: none;"><ul><li class="MsoNormal"><span lang="EN-US">lack of regular realm key rotation,</span></li><li class="MsoNormal"><span lang="EN-US">missing client secret rotation,</span></li><li class="MsoNormal"><span lang="EN-US">overly permissive redirect URIs and web origins,</span></li><li class="MsoNormal"><span lang="EN-US">unused but enabled service accounts,</span></li><li class="MsoNormal"><span lang="EN-US">globally enabled “full scope allowed” settings,</span></li><li class="MsoNormal"><span lang="EN-US">deprecated direct access grants left active,</span></li><li class="MsoNormal"><span lang="EN-US">missing or inconsistent enforcement of PKCE.</span></li></ul></li></ul><p class="MsoNormal"><span lang="EN-US"> </span></p><blockquote><p class="MsoNormal"><span lang="EN-US">While these topics are well known, they are worth revisiting from an operational perspective. In large, multi-realm Keycloak deployments, even seemingly minor configuration oversights can accumulate and significantly increase the overall attack surface.</span></p></blockquote>						</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-9503a76 e-con-full e-flex e-con e-child" data-id="9503a76" data-element_type="container">
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-1e30445 e-flex e-con-boxed e-con e-parent" data-id="1e30445" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-149bd34 elementor-widget elementor-widget-spacer" data-id="149bd34" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-c9c066d e-flex e-con-boxed e-con e-parent" data-id="c9c066d" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-e1250b7 elementor-widget elementor-widget-spacer" data-id="e1250b7" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-dc00e5e e-flex e-con-boxed e-con e-parent" data-id="dc00e5e" data-element_type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-db7a09c e-con-full e-flex e-con e-child" data-id="db7a09c" data-element_type="container">
				</div>
		<div class="elementor-element elementor-element-6f60a0d e-con-full e-flex e-con e-child" data-id="6f60a0d" data-element_type="container">
				<div class="elementor-element elementor-element-06970d8 elementor-widget elementor-widget-text-editor" data-id="06970d8" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h2 class="MsoNormal"><span lang="EN-US">2. Client-side audit – where the highest risks emerge</span></h2><p>From a security standpoint, the most sensitive and often underestimated part of a Keycloak deployment is the client application layer. Even a well-configured Authorization Server cannot compensate for insecure client-side implementations.</p><blockquote><p>“In real-world Keycloak deployments, the most critical security risks rarely originate in the IAM platform itself — they emerge at the client application layer.”</p></blockquote><p>In practice, the most severe findings during Keycloak audits are almost always related to how applications consume tokens, validate authentication state, and handle sensitive data after a successful login.</p><h5> </h5><h5>Missing token validation in client applications</h5><p>One of the most critical issues observed in enterprise environments is incomplete or missing access token validation on the application side. This includes scenarios where:</p><ul><li style="list-style-type: none;"><ul><li>endpoints do not verify authentication at all,</li><li>token signatures or claims are not fully validated,</li><li>authorization checks are inconsistently applied across APIs.</li></ul></li></ul><p>Such vulnerabilities effectively bypass Keycloak entirely, allowing attackers to interact directly with application endpoints without compromising the IAM platform itself.</p><h5> </h5><h5>Insecure token storage and handling</h5><p>Another high-impact issue involves improper handling of access tokens within client applications. Common anti-patterns include:</p><ul><li style="list-style-type: none;"><ul><li>storing tokens in cookies without Secure or HttpOnly flags,</li><li>persisting tokens in local or session storage,</li><li>sharing tokens across application components in a durable form.</li></ul></li></ul><p>In browser-based applications, these practices dramatically increase exposure to XSS attacks and session hijacking. From an architectural perspective, this is an application design flaw rather than a Keycloak configuration issue.</p><h5> </h5><h5>Token transmission via URLs</h5><p>Despite being widely discouraged, access tokens are still occasionally transmitted through URL query parameters or redirects, especially in legacy systems. This practice poses a severe security risk, as tokens may be exposed through:</p><ul><li style="list-style-type: none;"><ul><li>browser history,</li><li>server and proxy logs,</li><li>monitoring and analytics tools,</li><li>third-party integrations.</li></ul></li></ul><p>In multi-application IAM environments, such leakage can have cascading effects across multiple systems.</p><h5> </h5><h5>Incomplete PKCE or nonce support</h5><p>Some client applications technically use the Authorization Code Flow, but fail to:</p><ul><li style="list-style-type: none;"><ul><li>properly implement PKCE,</li><li>validate nonce values,</li><li>or explicitly enforce secure defaults in client libraries.</li></ul></li></ul><p>In complex deployments with numerous redirect paths and client types, this significantly increases the risk of authorization code injection attacks, even when Keycloak itself is correctly configured.</p><p>Missing security headers and improper cookie configuration</p><p>Finally, many audited applications lack basic web security hardening measures such as:</p><ul><li style="list-style-type: none;"><ul><li>Content-Security-Policy (CSP),</li><li>HTTP Strict Transport Security (HSTS),</li><li>properly configured SameSite cookie attributes.</li></ul></li></ul><p> </p><p><strong>These controls are not managed by Keycloak, yet they play a crucial role in protecting authentication flows and user sessions at the application level.</strong></p>						</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-3af0d31 e-con-full e-flex e-con e-child" data-id="3af0d31" data-element_type="container">
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-aab7bdc e-flex e-con-boxed e-con e-parent" data-id="aab7bdc" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-d4b4986 elementor-widget elementor-widget-spacer" data-id="d4b4986" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-4273c47 e-flex e-con-boxed e-con e-parent" data-id="4273c47" data-element_type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-449f2ba e-con-full e-flex e-con e-child" data-id="449f2ba" data-element_type="container">
				</div>
		<div class="elementor-element elementor-element-978d452 e-con-full e-flex e-con e-child" data-id="978d452" data-element_type="container">
				<div class="elementor-element elementor-element-604823d elementor-widget elementor-widget-text-editor" data-id="604823d" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h2>Summary</h2><p>Auditing a Keycloak deployment in an enterprise environment requires looking far beyond realm and client configuration screens. While proper Keycloak hardening is essential, the highest security risks typically arise from insecure client-side implementations and architectural decisions.</p><p> </p><blockquote><p>“Keycloak can be hardened perfectly, yet the overall security posture will always be defined by the weakest client application integrated with it.”</p></blockquote><p> </p><p>Based on practical audit experience in large, multi-realm Keycloak environments:</p><ul><li style="list-style-type: none;"><ul><li>the most critical vulnerabilities emerge at the intersection of Keycloak and client applications,</li><li>correct IAM configuration does not mitigate insecure application behavior,</li><li>many high-impact issues can be resolved without changes to Keycloak itself, by improving application architecture and integration patterns.</li></ul></li></ul><p> </p><p>A well-executed Keycloak security audit helps organizations reduce attack surface, standardize IAM integrations, and safely scale their identity infrastructure across teams, environments, and business units.</p><p> </p><p>In large organizations, Keycloak effectively becomes the backbone of digital identity — and its real security strength is determined by the weakest link in the surrounding application ecosystem.</p>						</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-ed20b07 e-con-full e-flex e-con e-child" data-id="ed20b07" data-element_type="container">
				</div>
					</div>
				</div>
				</div>
		<p>Artykuł <a href="https://inero-software.com/keycloak-deployment-auditing-general-scope-and-guidelines/">Keycloak Deployment Auditing – General Scope and Guidelines</a> pochodzi z serwisu <a href="https://inero-software.com">Inero Software - Software Consulting</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">8306</post-id>	</item>
		<item>
		<title>Implementing an AI-Powered Telephony Service Center with ElevenLabs &#038; LiveAPI</title>
		<link>https://inero-software.com/enterprise-ai-telephony/</link>
		
		<dc:creator><![CDATA[Andrzej Chybicki]]></dc:creator>
		<pubDate>Mon, 17 Nov 2025 11:18:27 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Company]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[AI call center]]></category>
		<category><![CDATA[AI telephony]]></category>
		<category><![CDATA[AI voice pipelines]]></category>
		<category><![CDATA[conversational AI]]></category>
		<category><![CDATA[enterprise AI]]></category>
		<category><![CDATA[GDPR compliance]]></category>
		<category><![CDATA[LiveAPI]]></category>
		<category><![CDATA[LLM voice interfaces]]></category>
		<category><![CDATA[real-time voice systems]]></category>
		<category><![CDATA[streaming AI;]]></category>
		<category><![CDATA[telephony integration]]></category>
		<category><![CDATA[voice automation]]></category>
		<guid isPermaLink="false">https://inero-software.com/?p=8238</guid>

					<description><![CDATA[<p>Implementing an AI-Powered Telephony Service Center with ElevenLabs &#38; LiveAPI Over the past year, advancements in real-time AI models and high‑fidelity speech synthesis have accelerated the development of AI-driven telephony systems. At Inero, we’ve had the opportunity to integrate modern telephony solutions with LiveAPI technology and ElevenLabs’ voice engine to&#8230;</p>
<p>Artykuł <a href="https://inero-software.com/enterprise-ai-telephony/">Implementing an AI-Powered Telephony Service Center with ElevenLabs &#038; LiveAPI</a> pochodzi z serwisu <a href="https://inero-software.com">Inero Software - Software Consulting</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="8238" class="elementor elementor-8238" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-44c8f7e e-flex e-con-boxed e-con e-parent" data-id="44c8f7e" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-cfa815a elementor-widget elementor-widget-spacer" data-id="cfa815a" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-6cc775b e-flex e-con-boxed e-con e-parent" data-id="6cc775b" data-element_type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-ad26502 e-con-full e-flex e-con e-child" data-id="ad26502" data-element_type="container">
				</div>
		<div class="elementor-element elementor-element-4974bf1 e-con-full e-flex e-con e-child" data-id="4974bf1" data-element_type="container">
				<div class="elementor-element elementor-element-dc50676 elementor-widget elementor-widget-text-editor" data-id="dc50676" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h1><span lang="EN-US">Implementing an AI-Powered Telephony Service Center with ElevenLabs &amp; LiveAPI</span></h1><p> </p><p class="MsoNormal"><span lang="EN-US">Over the past year, advancements in real-time AI models and high‑fidelity speech synthesis have accelerated the development of AI-driven telephony systems. At Inero, we’ve had the opportunity to integrate modern telephony solutions with LiveAPI technology and ElevenLabs’ voice engine to create a human‑like, responsive, GDPR‑compliant communication experience for a major corporate client.<br /><br />This article combines two perspectives: a high-level overview of LiveAPI and ElevenLabs technology, and a behind‑the‑scenes look at our practical engineering experience while delivering a real-world AI telephony solution.</span></p>						</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-5ab22b7 e-con-full e-flex e-con e-child" data-id="5ab22b7" data-element_type="container">
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-0150de1 e-flex e-con-boxed e-con e-parent" data-id="0150de1" data-element_type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-e45f203 e-con-full e-flex e-con e-child" data-id="e45f203" data-element_type="container">
				</div>
		<div class="elementor-element elementor-element-a617588 e-con-full e-flex e-con e-child" data-id="a617588" data-element_type="container">
				<div class="elementor-element elementor-element-83d612c elementor-widget elementor-widget-spacer" data-id="83d612c" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-e0cafc0 elementor-widget elementor-widget-text-editor" data-id="e0cafc0" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h2><span lang="EN-US">1. What Makes LiveAPI and ElevenLabs a Powerful Combination?</span></h2><p> </p><p class="MsoNormal"><span lang="EN-US">LiveAPI solutions such as OpenAI Realtime API and Google Gemini Live API shift the paradigm from static prompts to streaming, interactive communication. These systems support real‑time audio input, low‑latency responses, natural interrupt handling, and multimodal context.<br /><br />ElevenLabs complements this with industry‑leading voice synthesis. Its realistic, expressive voices and advanced prosody control enable AI agents that sound convincingly human. For telephony environments, this matters — clients expect clarity, confidence, and a pleasant conversational tone.</span></p>						</div>
				</div>
		<div class="elementor-element elementor-element-275490b e-con-full e-flex e-con e-child" data-id="275490b" data-element_type="container">
				<div class="elementor-element elementor-element-b98492a elementor-widget elementor-widget-image" data-id="b98492a" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
													<img fetchpriority="high" decoding="async" data-attachment-id="8251" data-permalink="https://inero-software.com/enterprise-ai-telephony/liveapi_elevenlabs_interactionmodel/" data-orig-file="https://inero-software.com/wp-content/uploads/2025/11/LiveAPI_ElevenLabs_InteractionModel.png" data-orig-size="1536,1024" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="LiveAPI + ElevenLabs Interaction Model" data-image-description="&lt;p&gt;A clean, purple-themed diagram visualizing the data flow in an AI-powered telephony system. The graphic illustrates how a user speaks into a microphone, how the audio is processed by a LiveAPI voice LLM, and how the response is synthesized by ElevenLabs TTS before returning to the user as speech. The design represents a real-time, low-latency interaction loop used in modern conversational AI and telephony integrations.&lt;/p&gt;
" data-image-caption="&lt;p&gt;How user audio flows through LiveAPI and ElevenLabs TTS to create real-time voice responses.&lt;/p&gt;
" data-medium-file="https://inero-software.com/wp-content/uploads/2025/11/LiveAPI_ElevenLabs_InteractionModel-300x200.png" data-large-file="https://inero-software.com/wp-content/uploads/2025/11/LiveAPI_ElevenLabs_InteractionModel-1030x687.png" tabindex="0" role="button" width="1030" height="687" src="https://inero-software.com/wp-content/uploads/2025/11/LiveAPI_ElevenLabs_InteractionModel-1030x687.png" class="attachment-large size-large wp-image-8251" alt="Diagram showing the interaction flow between a user, a LiveAPI voice model, and ElevenLabs TTS in a real-time AI telephony system." srcset="https://inero-software.com/wp-content/uploads/2025/11/LiveAPI_ElevenLabs_InteractionModel-1030x687.png 1030w, https://inero-software.com/wp-content/uploads/2025/11/LiveAPI_ElevenLabs_InteractionModel-300x200.png 300w, https://inero-software.com/wp-content/uploads/2025/11/LiveAPI_ElevenLabs_InteractionModel-768x512.png 768w, https://inero-software.com/wp-content/uploads/2025/11/LiveAPI_ElevenLabs_InteractionModel-450x300.png 450w, https://inero-software.com/wp-content/uploads/2025/11/LiveAPI_ElevenLabs_InteractionModel.png 1536w" sizes="(max-width: 1030px) 100vw, 1030px" data-attachment-id="8251" data-permalink="https://inero-software.com/enterprise-ai-telephony/liveapi_elevenlabs_interactionmodel/" data-orig-file="https://inero-software.com/wp-content/uploads/2025/11/LiveAPI_ElevenLabs_InteractionModel.png" data-orig-size="1536,1024" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="LiveAPI + ElevenLabs Interaction Model" data-image-description="&lt;p&gt;A clean, purple-themed diagram visualizing the data flow in an AI-powered telephony system. The graphic illustrates how a user speaks into a microphone, how the audio is processed by a LiveAPI voice LLM, and how the response is synthesized by ElevenLabs TTS before returning to the user as speech. The design represents a real-time, low-latency interaction loop used in modern conversational AI and telephony integrations.&lt;/p&gt;
" data-image-caption="&lt;p&gt;How user audio flows through LiveAPI and ElevenLabs TTS to create real-time voice responses.&lt;/p&gt;
" data-medium-file="https://inero-software.com/wp-content/uploads/2025/11/LiveAPI_ElevenLabs_InteractionModel-300x200.png" data-large-file="https://inero-software.com/wp-content/uploads/2025/11/LiveAPI_ElevenLabs_InteractionModel-1030x687.png" role="button" />													</div>
				</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-ca7edd1 e-con-full e-flex e-con e-child" data-id="ca7edd1" data-element_type="container">
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-3553e31 e-flex e-con-boxed e-con e-parent" data-id="3553e31" data-element_type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-4d3148a e-con-full e-flex e-con e-child" data-id="4d3148a" data-element_type="container">
				</div>
		<div class="elementor-element elementor-element-5d07d44 e-con-full e-flex e-con e-child" data-id="5d07d44" data-element_type="container">
				<div class="elementor-element elementor-element-1a97268 elementor-widget elementor-widget-spacer" data-id="1a97268" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-02ef01f elementor-widget elementor-widget-text-editor" data-id="02ef01f" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h2><span lang="EN-US">2. Why GDPR Compliance Shapes the Choice of API in Europe</span></h2><p class="MsoNormal"><span lang="EN-US">For European organisations, GDPR compliance is not optional — it defines which AI vendors can be used in production. Although both OpenAI and Google offer real-time APIs, enterprises operating in the EU often restrict use to providers ensuring transparent, EU‑aligned data governance. In practice, this means that Gemini Live API was the viable choice for our implementation, while OpenAI was excluded despite strong technical capabilities.</span></p>						</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-b6d89f4 e-con-full e-flex e-con e-child" data-id="b6d89f4" data-element_type="container">
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-edad7b5 e-flex e-con-boxed e-con e-parent" data-id="edad7b5" data-element_type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-8da2a35 e-con-full e-flex e-con e-child" data-id="8da2a35" data-element_type="container">
				</div>
		<div class="elementor-element elementor-element-6d9a181 e-con-full e-flex e-con e-child" data-id="6d9a181" data-element_type="container">
				<div class="elementor-element elementor-element-567ff66 elementor-widget elementor-widget-spacer" data-id="567ff66" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-f5c5517 elementor-widget elementor-widget-text-editor" data-id="f5c5517" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h2><span lang="EN-US">3. Our Practical Experience Integrating Telephony with LiveAPI and ElevenLabs</span></h2><p class="MsoNormal"><span lang="EN-US">Below we outline the key lessons, challenges, and engineering decisions from our implementation.</span></p><p class="MsoNormal"><span lang="EN-US"> </span></p><h3><span lang="EN-US">3.1 Project Context</span></h3><p class="MsoNormal"><span lang="EN-US">Our client — a large corporate organisation — required a system capable of handling outbound and inbound calls automatically, while maintaining a tone and responsiveness extremely close to human interaction. The goal was not a simple IVR or menu system, but a natural, fully conversational experience driven by real‑time AI.</span></p><p class="MsoNormal"><span lang="EN-US"> </span></p><h3><span lang="EN-US">3.2 Technology Stack and Constraints</span></h3><p class="MsoNormal"><span lang="EN-US">We evaluated both OpenAI and Gemini Live APIs to compare latency, contextual reasoning and streaming quality. However, due to GDPR compliance requirements, the production system was designed around Gemini Live API. ElevenLabs provided the speech synthesis layer, offering high realism and consistent quality across telephony channels.</span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-a79ca65 elementor-widget elementor-widget-image" data-id="a79ca65" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
													<img decoding="async" data-attachment-id="8260" data-permalink="https://inero-software.com/enterprise-ai-telephony/telephony_elevenlabs_pipeline-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2025/11/Telephony_ElevenLabs_Pipeline-1.png" data-orig-size="1536,1024" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="AI Telephony Pipleine" data-image-description="&lt;p&gt;Diagram showing the processing pipeline from telephony audio through LiveAPI to ElevenLabs TTS in an AI-powered voice system.&lt;/p&gt;
" data-image-caption="&lt;p&gt;Diagram showing the processing pipeline from telephony audio through LiveAPI to ElevenLabs TTS in an AI-powered voice system.&lt;/p&gt;
" data-medium-file="https://inero-software.com/wp-content/uploads/2025/11/Telephony_ElevenLabs_Pipeline-1-300x200.png" data-large-file="https://inero-software.com/wp-content/uploads/2025/11/Telephony_ElevenLabs_Pipeline-1-1030x687.png" tabindex="0" role="button" width="768" height="512" src="https://inero-software.com/wp-content/uploads/2025/11/Telephony_ElevenLabs_Pipeline-1-768x512.png" class="attachment-medium_large size-medium_large wp-image-8260" alt="Telephony with AI Processing Pipeline" srcset="https://inero-software.com/wp-content/uploads/2025/11/Telephony_ElevenLabs_Pipeline-1-768x512.png 768w, https://inero-software.com/wp-content/uploads/2025/11/Telephony_ElevenLabs_Pipeline-1-300x200.png 300w, https://inero-software.com/wp-content/uploads/2025/11/Telephony_ElevenLabs_Pipeline-1-1030x687.png 1030w, https://inero-software.com/wp-content/uploads/2025/11/Telephony_ElevenLabs_Pipeline-1.png 1536w" sizes="(max-width: 768px) 100vw, 768px" data-attachment-id="8260" data-permalink="https://inero-software.com/enterprise-ai-telephony/telephony_elevenlabs_pipeline-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2025/11/Telephony_ElevenLabs_Pipeline-1.png" data-orig-size="1536,1024" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="AI Telephony Pipleine" data-image-description="&lt;p&gt;Diagram showing the processing pipeline from telephony audio through LiveAPI to ElevenLabs TTS in an AI-powered voice system.&lt;/p&gt;
" data-image-caption="&lt;p&gt;Diagram showing the processing pipeline from telephony audio through LiveAPI to ElevenLabs TTS in an AI-powered voice system.&lt;/p&gt;
" data-medium-file="https://inero-software.com/wp-content/uploads/2025/11/Telephony_ElevenLabs_Pipeline-1-300x200.png" data-large-file="https://inero-software.com/wp-content/uploads/2025/11/Telephony_ElevenLabs_Pipeline-1-1030x687.png" role="button" />													</div>
				</div>
				<div class="elementor-element elementor-element-1ed3b4d elementor-widget elementor-widget-text-editor" data-id="1ed3b4d" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h3 style="font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal;"><span lang="EN-US">3.3 Key Engineering Challenges</span></h3><p class="MsoNormal" style="font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 300; font-size: 14px; font-family: Roboto, sans-serif;"><span lang="EN-US">Beyond typical engineering concerns like audio quality, session stability, and call routing, the most demanding challenge was not purely technical — it was understanding how real users communicate over the phone. Subtle behaviors such as interruptions, hesitation, changing tone, or switching context required careful analysis and extensive testing.</span></p><p style="font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 300; font-size: 14px; font-family: Roboto, sans-serif;">We also dealt with several micro‑issues, such as premature call termination, incorrect end‑of‑utterance detection, and managing the timing between user speech and AI responses.</p><p style="font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 300; font-size: 14px; font-family: Roboto, sans-serif;"> </p><h3 style="font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal;"><span lang="EN-US">3.4 What We Built Ourselves</span></h3><p class="MsoNormal" style="font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 300; font-size: 14px; font-family: Roboto, sans-serif;"><span lang="EN-US">AI models are inherently non‑deterministic and cannot be fully controlled like classic software components. To ensure predictable and business‑aligned outcomes, we developed backend modules responsible for:<br />• Conversation flow supervision<br />• Session state tracking<br />• Monitoring and logging voice interactions<br />• Handling edge cases and ambiguous user inputs</span></p><p style="font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 300; font-size: 14px; font-family: Roboto, sans-serif;">ElevenLabs’ tooling, especially the Hard Disk service, significantly supported our workflow, but the orchestration layer was built entirely by Inero.</p><p style="font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 300; font-size: 14px; font-family: Roboto, sans-serif;"> </p><h3 style="font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal;"><span lang="EN-US">3.5 What We Learned</span></h3><p class="MsoNormal" style="font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 300; font-size: 14px; font-family: Roboto, sans-serif;"><span lang="EN-US">The most important insight: designing a telephony AI system requires deep understanding of the user’s context, combined with the business objectives of the project. Quick prototyping and iterative PoC testing were essential — allowing us to validate conversational patterns early, reveal unexpected user behavior, and refine the interaction design.</span></p><p style="font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 300; font-size: 14px; font-family: Roboto, sans-serif;">Ultimately, success depended on aligning the AI’s conversational style with how real customers naturally speak, pause, and respond during a phone call.</p>						</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-4d8ebb5 e-con-full e-flex e-con e-child" data-id="4d8ebb5" data-element_type="container">
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-36fce65 e-flex e-con-boxed e-con e-parent" data-id="36fce65" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-bafc838 elementor-widget elementor-widget-spacer" data-id="bafc838" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-f0ecd4f e-flex e-con-boxed e-con e-parent" data-id="f0ecd4f" data-element_type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-a477dbd e-con-full e-flex e-con e-child" data-id="a477dbd" data-element_type="container">
				</div>
		<div class="elementor-element elementor-element-326a90c e-con-full e-flex e-con e-child" data-id="326a90c" data-element_type="container">
				<div class="elementor-element elementor-element-1fab35c elementor-widget elementor-widget-text-editor" data-id="1fab35c" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h2><span lang="EN-US">4. GDPR Considerations in AI Telephony</span></h2><p> </p><p class="MsoNormal"><span lang="EN-US">All audio handling, session storage, and logging were designed according to GDPR principles: strict data minimisation, no training on user audio, encrypted transmission, and optional anonymisation of transcriptions. Where possible, processing was routed through EU‑aligned infrastructure.</span></p>						</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-fdd54ad e-con-full e-flex e-con e-child" data-id="fdd54ad" data-element_type="container">
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-59b4a48 e-flex e-con-boxed e-con e-parent" data-id="59b4a48" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-9ace4b8 elementor-widget elementor-widget-spacer" data-id="9ace4b8" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-bc2dbef e-flex e-con-boxed e-con e-parent" data-id="bc2dbef" data-element_type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-ec7d459 e-con-full e-flex e-con e-child" data-id="ec7d459" data-element_type="container">
				</div>
		<div class="elementor-element elementor-element-46c6762 e-con-full e-flex e-con e-child" data-id="46c6762" data-element_type="container">
				<div class="elementor-element elementor-element-792a12f elementor-widget elementor-widget-text-editor" data-id="792a12f" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h2><span lang="EN-US">Conclusion<o:p></o:p></span></h2><p>

</p><p class="MsoNormal"><span lang="EN-US">Implementing an AI‑driven telephony service
center requires more than connecting APIs — it requires understanding users,
managing nuanced conversational flows, and ensuring full compliance with EU
regulations. Our experience shows that LiveAPI technologies combined with
ElevenLabs can deliver highly human‑like, responsive, and scalable
communication channels for enterprise clients.<o:p></o:p></span></p>						</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-421f13d e-con-full e-flex e-con e-child" data-id="421f13d" data-element_type="container">
				</div>
					</div>
				</div>
				</div>
		<p>Artykuł <a href="https://inero-software.com/enterprise-ai-telephony/">Implementing an AI-Powered Telephony Service Center with ElevenLabs &#038; LiveAPI</a> pochodzi z serwisu <a href="https://inero-software.com">Inero Software - Software Consulting</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">8238</post-id>	</item>
		<item>
		<title>Secure Email Delivery in Keycloak 26.2 Using XOAUTH2</title>
		<link>https://inero-software.com/secure-email-delivery-in-keycloak-26-2-using-xoauth2/</link>
		
		<dc:creator><![CDATA[Andrzej Chybicki]]></dc:creator>
		<pubDate>Mon, 15 Sep 2025 10:48:22 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Company]]></category>
		<category><![CDATA[Keycloak]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[keycloak]]></category>
		<category><![CDATA[Multi-Factor Authentication]]></category>
		<category><![CDATA[SMTP]]></category>
		<category><![CDATA[XOAUTH2]]></category>
		<guid isPermaLink="false">https://inero-software.com/?p=8141</guid>

					<description><![CDATA[<p>Secure Email Delivery in Keycloak 26.2 Using XOAUTH2 Email has been one of the oldest and most fundamental services on the internet, used for notifications, password resets, verifications, and more. Over time we’ve seen major improvements — encryption via TLS, then STARTTLS, and now many providers are moving away from&#8230;</p>
<p>Artykuł <a href="https://inero-software.com/secure-email-delivery-in-keycloak-26-2-using-xoauth2/">Secure Email Delivery in Keycloak 26.2 Using XOAUTH2</a> pochodzi z serwisu <a href="https://inero-software.com">Inero Software - Software Consulting</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="8141" class="elementor elementor-8141" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-bb57bd9 e-flex e-con-boxed e-con e-parent" data-id="bb57bd9" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-437b6d1 elementor-widget elementor-widget-spacer" data-id="437b6d1" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-db34a4b e-flex e-con-boxed e-con e-parent" data-id="db34a4b" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-641bb6a elementor-widget elementor-widget-spacer" data-id="641bb6a" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-50bb99f e-flex e-con-boxed e-con e-parent" data-id="50bb99f" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-4a41088 elementor-widget elementor-widget-text-editor" data-id="4a41088" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h1>Secure Email Delivery in Keycloak 26.2 Using XOAUTH2</h1><p>Email has been one of the oldest and most fundamental services on the internet, used for notifications, password resets, verifications, and more. Over time we’ve seen major improvements — encryption via TLS, then STARTTLS, and now many providers are moving away from basic password authentication in favor of modern token-based schemes like XOAUTH2. With Keycloak 26.2, this evolution has arrived: Keycloak now supports XOAUTH2 for outgoing SMTP mail, adding greater security and compatibility with providers who have deprecated legacy authentication</p>						</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-8c716d3 e-flex e-con-boxed e-con e-parent" data-id="8c716d3" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-45fb36f elementor-widget elementor-widget-spacer" data-id="45fb36f" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-b657726 e-flex e-con-boxed e-con e-parent" data-id="b657726" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-a743437 elementor-widget elementor-widget-text-editor" data-id="a743437" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h2>1. What is XOAUTH2, and Why It Matters</h2><p>XOAUTH2 is a means of authenticating to an SMTP (or other email-sending) server using an OAuth2 access token rather than a username + password. Some of the key benefits include:</p><ul><li style="list-style-type: none;"><ul><li>Improved Security: Tokens can be more tightly controlled, with limited scope and lifetime.</li><li>Compliance with Modern Providers: Many providers are disabling basic auth.</li><li>Centralised and Auditable Auth: Easier management and rotation. Each client&#8217;s access can be revoked independently of other clients&#8217; operations.</li><li>Reduced Risk of Credential Leakage: No raw passwords stored or transmitted.</li></ul></li></ul>						</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-49d6f0b e-flex e-con-boxed e-con e-parent" data-id="49d6f0b" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-761d03b elementor-widget elementor-widget-spacer" data-id="761d03b" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-cac6421 e-flex e-con-boxed e-con e-parent" data-id="cac6421" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-dc1c0d3 elementor-widget elementor-widget-text-editor" data-id="dc1c0d3" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h2>2. How XOAUTH2 is Implemented in Keycloak 26.2</h2><p>With version 26.2, Keycloak adds native support for XOAUTH2 when sending emails via SMTP. This means administrators can move away from static username and password credentials and instead configure Keycloak to obtain an OAuth2 access token at runtime.</p><p>In the Admin Console under Realm → Realm Settings → Email, you can now switch the Authentication Type from Password to Token (XOAUTH2). Once enabled, additional fields appear where you provide:</p><p>&#8211; Client ID and Client Secret from your identity provider (e.g., Azure AD).<br />&#8211; The OAuth2 Token Endpoint used to request an access token.<br />&#8211; Optional Scopes, depending on your provider (for Microsoft 365: https://outlook.office365.com/.default).<br />&#8211; A From address / SMTP username, which may still be required by the mail server.</p><p>Keycloak then handles the process of requesting and refreshing tokens using the Client Credentials Grant flow. You can use the “Test connection” button to verify that the configuration is correct and that emails can be sent successfully.</p><p>This approach aligns Keycloak with modern security standards and prepares deployments for providers that are phasing out legacy authentication.</p><p><img decoding="async" data-attachment-id="8207" data-permalink="https://inero-software.com/image-12/" data-orig-file="https://inero-software.com/wp-content/uploads/2025/09/image-12.png" data-orig-size="1235,1095" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image (12)" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2025/09/image-12-300x266.png" data-large-file="https://inero-software.com/wp-content/uploads/2025/09/image-12-1030x913.png" tabindex="0" role="button" class="aligncenter wp-image-8207 size-large" src="https://inero-software.com/wp-content/uploads/2025/09/image-12-1030x913.png" alt="" width="1030" height="913" srcset="https://inero-software.com/wp-content/uploads/2025/09/image-12-1030x913.png 1030w, https://inero-software.com/wp-content/uploads/2025/09/image-12-300x266.png 300w, https://inero-software.com/wp-content/uploads/2025/09/image-12-768x681.png 768w, https://inero-software.com/wp-content/uploads/2025/09/image-12-338x300.png 338w, https://inero-software.com/wp-content/uploads/2025/09/image-12.png 1235w" sizes="(max-width: 1030px) 100vw, 1030px" /></p><p><strong data-start="0" data-end="9" data-is-only-node="">Note:</strong> The <strong data-start="14" data-end="35">Enable Debug SMTP</strong> option (visible at the bottom of the form) activates extended logging for outgoing email. When enabled, Keycloak produces detailed debug output of the SMTP communication, which can be very useful for diagnosing integration issues such as authentication failures, token retrieval problems, or TLS misconfigurations. It is recommended to use this setting only in testing or troubleshooting scenarios, as it may expose sensitive information in the logs.</p>						</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-2e4203c e-flex e-con-boxed e-con e-parent" data-id="2e4203c" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-44a4294 elementor-widget elementor-widget-spacer" data-id="44a4294" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-94072c9 e-flex e-con-boxed e-con e-parent" data-id="94072c9" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-802a36b elementor-widget__width-inherit elementor-invisible elementor-widget elementor-widget-text-editor" data-id="802a36b" data-element_type="widget" data-settings="{&quot;_animation&quot;:&quot;fadeIn&quot;}" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h4 style="text-align: center;"><span style="color: #431773;">Retirement of Basic Authentication for SMTP AUTH (Client Submission) in Exchange Online</span></h4>						</div>
				</div>
				<div class="elementor-element elementor-element-5f3b86e elementor-widget elementor-widget-spacer" data-id="5f3b86e" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-86a8aa1 e-flex e-con-boxed e-con e-parent" data-id="86a8aa1" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-2b76e0f elementor-widget elementor-widget-spacer" data-id="2b76e0f" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-04082db e-flex e-con-boxed e-con e-parent" data-id="04082db" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-7185a3d elementor-countdown--label-inline elementor-widget elementor-widget-countdown" data-id="7185a3d" data-element_type="widget" data-settings="{&quot;motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;motion_fx_devices&quot;:[&quot;desktop&quot;,&quot;tablet&quot;,&quot;mobile&quot;]}" data-widget_type="countdown.default">
				<div class="elementor-widget-container">
					<div class="elementor-countdown-wrapper" data-date="1772319600">
			<div class="elementor-countdown-item"><span class="elementor-countdown-digits elementor-countdown-days"></span> <span class="elementor-countdown-label">Days</span></div><div class="elementor-countdown-item"><span class="elementor-countdown-digits elementor-countdown-hours"></span> <span class="elementor-countdown-label">Hours</span></div>		</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-846c707 e-flex e-con-boxed e-con e-parent" data-id="846c707" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-bfa7caf elementor-widget elementor-widget-spacer" data-id="bfa7caf" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-0aa70e1 e-flex e-con-boxed e-con e-parent" data-id="0aa70e1" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-1d91819 elementor-widget elementor-widget-text-editor" data-id="1d91819" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h2>3. Why This Matters for Microsoft Azure / Office 365 Users</h2><blockquote><p>Microsoft has announced the retirement of Basic Authentication for SMTP AUTH (Client Submission) in Exchange Online. Starting March 1, 2026, Microsoft will begin phasing out Basic Auth, and by April 30, 2026, it will be completely disabled. This change directly impacts Keycloak deployments where outgoing emails are sent via Office 365 / Exchange Online SMTP.</p></blockquote><p>If your Keycloak instance is still configured with a username and password for SMTP, it will stop working once Basic Auth is retired. The solution is to migrate to XOAUTH2 configuration in Keycloak 26.2.</p><p>By adopting XOAUTH2, you ensure:</p><ul><li style="list-style-type: none;"><ul><li>Continued compatibility with Microsoft email services</li><li>Stronger security and compliance</li><li>Reduced risk compared to static credentials</li></ul></li></ul>						</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-8ef377e e-flex e-con-boxed e-con e-parent" data-id="8ef377e" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-126b40c elementor-widget elementor-widget-spacer" data-id="126b40c" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-0cdb0ae e-flex e-con-boxed e-con e-parent" data-id="0cdb0ae" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-8707cdb elementor-widget elementor-widget-text-editor" data-id="8707cdb" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h2><b data-stringify-type="bold">4. Beyond XOAUTH2?</b></h2><p>There’s even more going on in modern email delivery. Many email delivery platforms steer away from traditional SMTP protocol towards API-based approach (e.g. MailJet, SendGrid or MailGun). This gives more flexibility to integrators and allows platform providers to offer additional features. API-based email sending is not jet supported by Keycloak out-of-the-box, but this support can be added via custom extensions. Contact us if you are interested in integrating Keycloak with API-based email delivery platforms.</p>						</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-cc7f0e5 e-flex e-con-boxed e-con e-parent" data-id="cc7f0e5" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-cbe5851 elementor-widget elementor-widget-spacer" data-id="cbe5851" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-edbac9e e-flex e-con-boxed e-con e-parent" data-id="edbac9e" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-121b9ff elementor-widget elementor-widget-text-editor" data-id="121b9ff" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h2>Conclusion</h2><p>The addition of XOAUTH2 support in Keycloak 26.2 is more than just a feature upgrade — it’s an essential step for organizations that rely on Office 365, Gmail, or other providers who are deprecating legacy authentication. By adopting XOAUTH2 today, you can future-proof your Keycloak deployment, comply with provider requirements, and improve overall email security.</p>						</div>
				</div>
					</div>
				</div>
				</div>
		<p>Artykuł <a href="https://inero-software.com/secure-email-delivery-in-keycloak-26-2-using-xoauth2/">Secure Email Delivery in Keycloak 26.2 Using XOAUTH2</a> pochodzi z serwisu <a href="https://inero-software.com">Inero Software - Software Consulting</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">8141</post-id>	</item>
		<item>
		<title>Keycloak or SaaS IdP? A Tech Leader’s Guide to Making the Right IAM Choice</title>
		<link>https://inero-software.com/keycloak-or-saas-idp-a-tech-leaders-guide-to-making-the-right-iam-choice/</link>
		
		<dc:creator><![CDATA[Andrzej Chybicki]]></dc:creator>
		<pubDate>Thu, 24 Jul 2025 07:45:53 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Company]]></category>
		<category><![CDATA[Keycloak]]></category>
		<category><![CDATA[Technology]]></category>
		<guid isPermaLink="false">https://inero-software.com/?p=8063</guid>

					<description><![CDATA[<p>Introduction Shipping single sign‑on quickly is tempting. Stakeholders push for a smooth login experience, developers want to move on to core features, and security teams are eager to tick the “MFA enabled” box. The trouble is that identity and access management (IAM) decisions outlive launch days. Once you choose a&#8230;</p>
<p>Artykuł <a href="https://inero-software.com/keycloak-or-saas-idp-a-tech-leaders-guide-to-making-the-right-iam-choice/">Keycloak or SaaS IdP? A Tech Leader’s Guide to Making the Right IAM Choice</a> pochodzi z serwisu <a href="https://inero-software.com">Inero Software - Software Consulting</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="8063" class="elementor elementor-8063" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-dd2241f e-flex e-con-boxed e-con e-parent" data-id="dd2241f" data-element_type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-7a92edd e-con-full e-flex e-con e-child" data-id="7a92edd" data-element_type="container">
				<div class="elementor-element elementor-element-92153e6 elementor-widget elementor-widget-text-editor" data-id="92153e6" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h1><span lang="EN-US">Introduction</span></h1><p class="MsoNormal"><span lang="EN-US">Shipping single sign‑on quickly is tempting. Stakeholders push for a smooth login experience, developers want to move on to core features, and security teams are eager to tick the “MFA enabled” box. The trouble is that identity and access management (IAM) decisions outlive launch days. Once you choose a platform, you inherit its operational model, cost structure and compliance implications for years.</span></p><p class="MsoNormal"><span lang="EN-US">In this blogpost we provide technical leads some few crucial issues when evaluating Keycloak—an open‑source IAM platform that has become a go‑to choice in many Java and cloud‑native environments. Rather than a hands‑on tutorial, you’ll get a decision framework that starts with business realities. We’ll walk through seven questions that determine whether Keycloak fits your context. For each, you’ll see why it matters, how to assess it, the red flags to watch for, and a concrete deliverable to capture the outcome.</span></p><p class="MsoNormal"><span lang="EN-US">By the end, you’ll fill in a short scorecard and see if your organization toward Keycloak, a commercial SaaS IdP (Auth0, Okta, Azure AD B2C, etc.), or a hybrid path. If you want a sanity check, we offer a free 45‑minute Keycloak readiness consultation—no slides, just practical advice.</span></p><p class="MsoNormal"><span lang="EN-US"> </span></p>						</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-1c3872c e-flex e-con-boxed e-con e-parent" data-id="1c3872c" data-element_type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-ac23027 e-flex e-con-boxed e-con e-child" data-id="ac23027" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-f2b969a elementor-widget elementor-widget-text-editor" data-id="f2b969a" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h1><span lang="EN-US">Where Keycloak Lives in Your Stack</span></h1><p class="MsoNormal"><span lang="EN-US">Keycloak usually sits between your user‑facing applications and the identity sources they rely on. Applications delegate authentication and authorization to Keycloak. Keycloak can manage users internally or federate with LDAP/Active Directory. It also exposes logs and metrics that feed your SIEM and monitoring stack. Even if this picture seems obvious to engineers, spelling it out helps align legal, compliance and product stakeholders on who owns what.</span></p>						</div>
				</div>
					</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-926763e e-flex e-con-boxed e-con e-parent" data-id="926763e" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-c0f0f10 elementor-widget elementor-widget-image" data-id="c0f0f10" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
													<img loading="lazy" decoding="async" data-attachment-id="8093" data-permalink="https://inero-software.com/keycloak-or-saas-idp-a-tech-leaders-guide-to-making-the-right-iam-choice/keycloak_diagram/" data-orig-file="https://inero-software.com/wp-content/uploads/2025/07/KeyCloak_Diagram-scaled.png" data-orig-size="2560,1777" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="KeyCloak_Diagram" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2025/07/KeyCloak_Diagram-300x208.png" data-large-file="https://inero-software.com/wp-content/uploads/2025/07/KeyCloak_Diagram-1030x715.png" tabindex="0" role="button" width="768" height="533" src="https://inero-software.com/wp-content/uploads/2025/07/KeyCloak_Diagram-768x533.png" class="attachment-medium_large size-medium_large wp-image-8093" alt="" srcset="https://inero-software.com/wp-content/uploads/2025/07/KeyCloak_Diagram-768x533.png 768w, https://inero-software.com/wp-content/uploads/2025/07/KeyCloak_Diagram-300x208.png 300w, https://inero-software.com/wp-content/uploads/2025/07/KeyCloak_Diagram-1030x715.png 1030w, https://inero-software.com/wp-content/uploads/2025/07/KeyCloak_Diagram-1536x1066.png 1536w, https://inero-software.com/wp-content/uploads/2025/07/KeyCloak_Diagram-2048x1422.png 2048w, https://inero-software.com/wp-content/uploads/2025/07/KeyCloak_Diagram-432x300.png 432w" sizes="(max-width: 768px) 100vw, 768px" data-attachment-id="8093" data-permalink="https://inero-software.com/keycloak-or-saas-idp-a-tech-leaders-guide-to-making-the-right-iam-choice/keycloak_diagram/" data-orig-file="https://inero-software.com/wp-content/uploads/2025/07/KeyCloak_Diagram-scaled.png" data-orig-size="2560,1777" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="KeyCloak_Diagram" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2025/07/KeyCloak_Diagram-300x208.png" data-large-file="https://inero-software.com/wp-content/uploads/2025/07/KeyCloak_Diagram-1030x715.png" role="button" />													</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-02b5497 e-flex e-con-boxed e-con e-parent" data-id="02b5497" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-1b72159 elementor-widget elementor-widget-text-editor" data-id="1b72159" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h1><span lang="EN-US">Keycloak in a Nutshell (and Two Misconceptions)</span></h1><p class="MsoNormal"><span lang="EN-US">Keycloak is an open‑source IAM server supporting OIDC, SAML, MFA, theming and an extension model (SPIs). Originally developed by Red Hat, it now thrives under a large community.</span></p><p class="MsoNormal"><span lang="EN-US">Misconception #1: “Open source = free to run”. The software is free, but production IAM also needs infrastructure, monitoring, upgrades and people. Misconception #2: “It’s just for developers”. In reality, without governance and processes, any IAM platform becomes a liability.</span></p>						</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-934ad5e e-flex e-con-boxed e-con e-parent" data-id="934ad5e" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-26d21cd elementor-widget elementor-widget-text-editor" data-id="26d21cd" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h1 style="font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal;"><span lang="EN-US">Seven Questions to Frame the Decision</span></h1><div style="font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 300; font-size: 14px; font-family: Roboto, sans-serif;"><span lang="EN-US"> </span></div><p style="font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 300; font-size: 14px; font-family: Roboto, sans-serif;"><span lang="EN-US">Treat these questions as a workshop agenda, not a checklist. Bring security, operations, product and finance to the same table. The goal is to leave each session with an artifact that informs budgeting, architecture and planning.</span></p><p style="font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 300; font-size: 14px; font-family: Roboto, sans-serif;"><span lang="EN-US"> </span></p>						</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-6beb500 e-flex e-con-boxed e-con e-parent" data-id="6beb500" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-a4797f7 elementor-widget elementor-widget-text-editor" data-id="a4797f7" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h2>1. Compliance &amp; Risk: Do You Need Full Control Over IAM?</h2>
<p class="MsoNormal"><span lang="EN-US">Regulatory frameworks such as NIS2 or&nbsp;GDPR—and sector standards like PCI DSS or HIPAA—often demand demonstrable&nbsp;control over identities, audit trails and incident response. If auditors expect&nbsp;you to produce detailed logs or prove exactly who changed what, a black‑box&nbsp;SaaS can create friction&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">List the controls and evidence you must&nbsp;provide. Do you need to host IAM in a specific region?&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">How quickly must you&nbsp;produce logs? Are you required to approve every policy change?&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">If many answers&nbsp;point to tight control, Keycloak’s self‑hosted nature becomes an advantage.</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">The biggest red flag is deferring&nbsp;compliance: “we’ll pass audits later”. Another is that nobody owns IAM data&nbsp;retention or log policies.</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US"><b>Deliverable</b>: a compliance checklist mapped&nbsp;to IAM features and governance processes.</span></p>
<h2><span lang="EN-US">2. Integration Map: How Many Apps and Protocols Today—and in<br>Two Years?</span></h2>
<p><span lang="EN-US">Integration effort—not software&nbsp;choice—usually drives project cost and timeline. Keycloak handles&nbsp;OIDC/SAML/LDAP well, but legacy systems and partner constraints can complicate<br>the picture.&nbsp;</span>Inventory every application that authenticates users. Classify by protocol, business criticality and migration difficulty. Project changes over the next 24 months: new products,</p>
<p><span lang="EN-US">acquisitions, vendor switches.&nbsp;</span></p>
<p><span lang="EN-US">&nbsp;</span></p>
<p><b>Red flags</b>: no authoritative app inventory; underestimating testing for each integration.</p>
<p><span lang="EN-US">&nbsp;</span></p>
<p><span lang="EN-US"><b>Deliverable</b>: a prioritized integration&nbsp;backlog with rough sizing.</span></p>
<h2><span lang="EN-US">3. Team &amp; Operations Capacity: Can You Secure and Run It<br>24/7 (or Outsource)?</span></h2>
<p><span lang="EN-US">IAM outages stop business. Someone must&nbsp;patch, monitor, respond to incidents and plan upgrades. Decide whether your&nbsp;DevOps/SecOps team can own this or you’ll offload parts to a partner.</span></p>
<p><span lang="EN-US">Assess on‑call capacity, automation&nbsp;maturity, security expertise. Define SLAs, RTO/RPO. Consider managed services&nbsp;for routine ops while retaining architectural control&nbsp;</span></p>
<p><span lang="EN-US">&nbsp;</span></p>
<p><span lang="EN-US"><b>Red flags</b>: a single overworked DevOps, lack&nbsp;of monitoring/alerting, no upgrade plan.</span></p>
<p><span lang="EN-US">&nbsp;</span></p>
<p><span lang="EN-US"><b>Deliverable</b>: a RACI matrix for IAM&nbsp;operations and an initial ops budget.</span></p>
<h2><span lang="EN-US">4. Customization Needs: Themes, Extensions and Advanced<br>Authorization</span></h2>
<p><span lang="EN-US">Keycloak’s extensibility is a major&nbsp;advantage: custom authenticators, advanced policies (ABAC), branded login flows, phishing‑resistant UX. If differentiation or strict UX/security is a<br>requirement, flexibility matters.</span></p>
<p><span lang="EN-US">Gauge UX/theming demands, multilingual support, accessibility, device trust, passkeys, fine‑grained authorization.Each adds value to an extensible platform.</span></p>
<p><span lang="EN-US">&nbsp;</span></p>
<p><span lang="EN-US"><b>Red flags</b>: assuming the default theme is&nbsp;enough; ignoring SPI development complexity.</span></p>
<p><span lang="EN-US">&nbsp;</span></p>
<p><span lang="EN-US"><b>Deliverable</b>: a customization backlog with&nbsp;effort estimates and ownership.</span></p>
<h2><span lang="EN-US">5. Scalability &amp; High Availability: What Are Your Peak<br>Loads and DR Needs?</span></h2>
<p><span lang="EN-US">If login fails, revenue stops. HA/DR design&nbsp;impacts infrastructure cost and complexity. You need clarity on peaks,&nbsp;acceptable downtime and recovery objectives.</span></p>
<p><span lang="EN-US">Estimate peak concurrent logins (launch&nbsp;days, campaigns). Define RTO/RPO. Choose between VM clusters or Kubernetes with&nbsp;an operator. Decide on multi‑region strategies.</span></p>
<p><span lang="EN-US">&nbsp;</span></p>
<p><span lang="EN-US"><b>Red flags</b>: “we’ll scale later”, skipping DR tests entirely.</span></p>
<p><span lang="EN-US">&nbsp;</span></p>
<p><span lang="EN-US"><b>Deliverable</b>: an HA/DR architecture option&nbsp;matrix with pros, cons and cost</span></p>
<p><span lang="EN-US">.</span></p>
<h2><span lang="EN-US">6. Budget &amp; TCO: What Does Three Years Really Cost vs<br>SaaS?</span></h2>
<p><span lang="EN-US">Keycloak costs = infra + people +&nbsp;consulting. SaaS costs = subscriptions + add‑ons + overage fees.</span></p>
<p><span lang="EN-US">Only a 3‑year&nbsp;TCO model reveals the truth.</span></p>
<p><span lang="EN-US">Build a spreadsheet covering infra,&nbsp;backups, monitoring, labor, upgrades. Do the same for SaaS: MAU fees, advanced features, support tiers. Stress‑test both with growth scenarios.</span></p>
<p><span lang="EN-US">&nbsp;</span></p>
<p><span lang="EN-US"><b>Red flags</b>: ignoring people costs, assuming&nbsp;maintenance is free, overlooking SaaS overage triggers.</span></p>
<p><span lang="EN-US">&nbsp;</span></p>
<p><span lang="EN-US"><b>Deliverable</b>: a TCO calculator you can keep&nbsp;updating as data changes.</span></p>
<h2><span lang="EN-US">7. Vendor Lock‑In &amp; Roadmap Control: How Much Flexibility<br>Do You Need?</span></h2>
<p><span lang="EN-US">Open source gives you architectural&nbsp;freedom. SaaS gives you speed but ties you to someone else’s roadmap and&nbsp;pricing. Sometimes that’s fine; sometimes it’s a risk.</span></p>
<p><span lang="EN-US">Map likely IAM needs for 2–3 years. How&nbsp;critical is it to add custom flows quickly or hold back an upgrade? Could&nbsp;pricing shifts hurt you?</span></p>
<p><span lang="EN-US">&nbsp;</span></p>
<p><span lang="EN-US"><b>Red flag</b>: &#8216;we’ll never need to extend&#8217;.<br>Organizations evolve and regulations shift.</span></p>
<p><span lang="EN-US">&nbsp;</span></p>
<p><span lang="EN-US"><b>Deliverable</b>: a risk&nbsp;matrix—flexibility/control vs speed/convenience—plotting Keycloak, SaaS and&nbsp;Hybrid for your case.</span></p>
<p><span lang="EN-US">&nbsp;</span></p>						</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-3ff8df0 e-flex e-con-boxed e-con e-parent" data-id="3ff8df0" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-160dc54 elementor-widget elementor-widget-text-editor" data-id="160dc54" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h1><span lang="EN-US">A Visual Decision Flow</span></h1><p> </p><p class="MsoNormal"><span lang="EN-US">If your team prefers a diagram to spark discussion, start with the simplified flow below. It nudges you toward Keycloak, SaaS or Hybrid based on the dominant answers. Use it as an icebreaker, not as a final verdict.</span></p>						</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-f7741db e-flex e-con-boxed e-con e-parent" data-id="f7741db" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-19caa3f elementor-widget elementor-widget-image" data-id="19caa3f" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
													<img loading="lazy" decoding="async" data-attachment-id="8083" data-permalink="https://inero-software.com/keycloak-or-saas-idp-a-tech-leaders-guide-to-making-the-right-iam-choice/decisionflowdiagram/" data-orig-file="https://inero-software.com/wp-content/uploads/2025/07/DecisionFlowDiagram-scaled.png" data-orig-size="2560,1972" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="DecisionFlowDiagram" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2025/07/DecisionFlowDiagram-300x231.png" data-large-file="https://inero-software.com/wp-content/uploads/2025/07/DecisionFlowDiagram-1030x794.png" tabindex="0" role="button" width="768" height="592" src="https://inero-software.com/wp-content/uploads/2025/07/DecisionFlowDiagram-768x592.png" class="attachment-medium_large size-medium_large wp-image-8083" alt="" srcset="https://inero-software.com/wp-content/uploads/2025/07/DecisionFlowDiagram-768x592.png 768w, https://inero-software.com/wp-content/uploads/2025/07/DecisionFlowDiagram-300x231.png 300w, https://inero-software.com/wp-content/uploads/2025/07/DecisionFlowDiagram-1030x794.png 1030w, https://inero-software.com/wp-content/uploads/2025/07/DecisionFlowDiagram-1536x1183.png 1536w, https://inero-software.com/wp-content/uploads/2025/07/DecisionFlowDiagram-2048x1578.png 2048w, https://inero-software.com/wp-content/uploads/2025/07/DecisionFlowDiagram-389x300.png 389w" sizes="(max-width: 768px) 100vw, 768px" data-attachment-id="8083" data-permalink="https://inero-software.com/keycloak-or-saas-idp-a-tech-leaders-guide-to-making-the-right-iam-choice/decisionflowdiagram/" data-orig-file="https://inero-software.com/wp-content/uploads/2025/07/DecisionFlowDiagram-scaled.png" data-orig-size="2560,1972" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="DecisionFlowDiagram" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2025/07/DecisionFlowDiagram-300x231.png" data-large-file="https://inero-software.com/wp-content/uploads/2025/07/DecisionFlowDiagram-1030x794.png" role="button" />													</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-eafdc58 e-flex e-con-boxed e-con e-parent" data-id="eafdc58" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-99e0a6e elementor-widget elementor-widget-text-editor" data-id="99e0a6e" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h1><span lang="EN-US">Quantify It: The Scorecard</span></h1><p class="MsoNormal"><span lang="EN-US">To make debates objective, translate the seven questions into numbers. Give each one a score from 1 to 5 (5 means a strong push toward Keycloak). Totals near the high end suggest Keycloak or Hybrid; lower totals suggest SaaS. More important than the number is the conversation it forces: why did we give compliance a 5 but ops capacity a 2?</span></p><table class="MsoNormalTable" style="border-width: initial; border-style: none;" border="1" cellspacing="0" cellpadding="0"><tbody><tr><td style="width: 108pt; padding: 0cm 5.4pt; border: 1pt solid windowtext;" valign="top" width="144"><h5><span lang="EN-US"><b>Question</b></span></h5></td><td style="width: 108pt; border-top: 1pt solid windowtext; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left-width: initial; border-left-style: none; padding: 0cm 5.4pt;" valign="top" width="144"><h5><span lang="EN-US"><b>Score (1–5)</b></span></h5></td><td style="width: 108pt; border-top: 1pt solid windowtext; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left-width: initial; border-left-style: none; padding: 0cm 5.4pt;" valign="top" width="144"><h5><span lang="EN-US"><b>Notes</b></span></h5></td><td style="width: 108pt; border-top: 1pt solid windowtext; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left-width: initial; border-left-style: none; padding: 0cm 5.4pt;" valign="top" width="144"><h5><span lang="EN-US"><b>Leaning</b></span></h5></td></tr><tr><td style="width: 108pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-top-width: initial; border-top-style: none; padding: 0cm 5.4pt;" valign="top" width="144"><pre><span lang="EN-US">Compliance &amp; Risk: Do You Need Full Control Over IAM?</span></pre></td><td style="width: 108pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; padding: 0cm 5.4pt; border-width: initial 1pt 1pt initial;" valign="top" width="144"><pre><span lang="EN-US"> </span></pre></td><td style="width: 108pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-bottom-color: windowtext; border-right-color: windowtext; padding: 0cm 5.4pt; border-width: initial 1pt 1pt initial;" valign="top" width="144"><pre><span lang="EN-US"> </span></pre></td><td style="width: 108pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-bottom-color: windowtext; border-right-color: windowtext; padding: 0cm 5.4pt; border-width: initial 1pt 1pt initial;" valign="top" width="144"><pre><span lang="EN-US"> </span></pre></td></tr><tr><td style="width: 108pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-top-width: initial; border-top-style: none; padding: 0cm 5.4pt;" valign="top" width="144"><pre><span lang="EN-US">Integration Map: How Many Apps and Protocols Today—and in Two Years?</span></pre></td><td style="width: 108pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-bottom-color: windowtext; border-right-color: windowtext; padding: 0cm 5.4pt; border-width: initial 1pt 1pt initial;" valign="top" width="144"><pre><span lang="EN-US"> </span></pre></td><td style="width: 108pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-bottom-color: windowtext; border-right-color: windowtext; padding: 0cm 5.4pt; border-width: initial 1pt 1pt initial;" valign="top" width="144"><pre><span lang="EN-US"> </span></pre></td><td style="width: 108pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-bottom-color: windowtext; border-right-color: windowtext; padding: 0cm 5.4pt; border-width: initial 1pt 1pt initial;" valign="top" width="144"><pre><span lang="EN-US"> </span></pre></td></tr><tr><td style="width: 108pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-top-width: initial; border-top-style: none; padding: 0cm 5.4pt;" valign="top" width="144"><pre><span lang="EN-US">Team &amp; Operations Capacity: Can You Secure and Run It 24/7 (or Outsource)?</span></pre></td><td style="width: 108pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-bottom-color: windowtext; border-right-color: windowtext; padding: 0cm 5.4pt; border-width: initial 1pt 1pt initial;" valign="top" width="144"><pre><span lang="EN-US"> </span></pre></td><td style="width: 108pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-bottom-color: windowtext; border-right-color: windowtext; padding: 0cm 5.4pt; border-width: initial 1pt 1pt initial;" valign="top" width="144"><pre><span lang="EN-US"> </span></pre></td><td style="width: 108pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-bottom-color: windowtext; border-right-color: windowtext; padding: 0cm 5.4pt; border-width: initial 1pt 1pt initial;" valign="top" width="144"><pre><span lang="EN-US"> </span></pre></td></tr><tr><td style="width: 108pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-top-width: initial; border-top-style: none; padding: 0cm 5.4pt;" valign="top" width="144"><pre><span lang="EN-US">Customization Needs: Themes, Extensions and Advanced Authorization</span></pre></td><td style="width: 108pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-bottom-color: windowtext; border-right-color: windowtext; padding: 0cm 5.4pt; border-width: initial 1pt 1pt initial;" valign="top" width="144"><pre><span lang="EN-US"> </span></pre></td><td style="width: 108pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-bottom-color: windowtext; border-right-color: windowtext; padding: 0cm 5.4pt; border-width: initial 1pt 1pt initial;" valign="top" width="144"><pre><span lang="EN-US"> </span></pre></td><td style="width: 108pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-bottom-color: windowtext; border-right-color: windowtext; padding: 0cm 5.4pt; border-width: initial 1pt 1pt initial;" valign="top" width="144"><pre><span lang="EN-US"> </span></pre></td></tr><tr><td style="width: 108pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-top-width: initial; border-top-style: none; padding: 0cm 5.4pt;" valign="top" width="144"><pre><span lang="EN-US">Scalability &amp; High Availability: What Are Your Peak Loads and DR Needs?</span></pre></td><td style="width: 108pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-bottom-color: windowtext; border-right-color: windowtext; padding: 0cm 5.4pt; border-width: initial 1pt 1pt initial;" valign="top" width="144"><pre><span lang="EN-US"> </span></pre></td><td style="width: 108pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-bottom-color: windowtext; border-right-color: windowtext; padding: 0cm 5.4pt; border-width: initial 1pt 1pt initial;" valign="top" width="144"><pre><span lang="EN-US"> </span></pre></td><td style="width: 108pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-bottom-color: windowtext; border-right-color: windowtext; padding: 0cm 5.4pt; border-width: initial 1pt 1pt initial;" valign="top" width="144"><pre><span lang="EN-US"> </span></pre></td></tr><tr><td style="width: 108pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-top-width: initial; border-top-style: none; padding: 0cm 5.4pt;" valign="top" width="144"><pre><span lang="EN-US">Budget &amp; TCO: What Does Three Years Really Cost vs SaaS?</span></pre></td><td style="width: 108pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-bottom-color: windowtext; border-right-color: windowtext; padding: 0cm 5.4pt; border-width: initial 1pt 1pt initial;" valign="top" width="144"><pre><span lang="EN-US"> </span></pre></td><td style="width: 108pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-bottom-color: windowtext; border-right-color: windowtext; padding: 0cm 5.4pt; border-width: initial 1pt 1pt initial;" valign="top" width="144"><pre><span lang="EN-US"> </span></pre></td><td style="width: 108pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-bottom-color: windowtext; border-right-color: windowtext; padding: 0cm 5.4pt; border-width: initial 1pt 1pt initial;" valign="top" width="144"><pre><span lang="EN-US"> </span></pre></td></tr><tr><td style="width: 108pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-top-width: initial; border-top-style: none; padding: 0cm 5.4pt;" valign="top" width="144"><pre><span lang="EN-US">Vendor Lock‑In &amp; Roadmap Control: How Much Flexibility Do You Need?</span></pre></td><td style="width: 108pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-bottom-color: windowtext; border-right-color: windowtext; padding: 0cm 5.4pt; border-width: initial 1pt 1pt initial;" valign="top" width="144"><pre><span lang="EN-US"> </span></pre></td><td style="width: 108pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-bottom-color: windowtext; border-right-color: windowtext; padding: 0cm 5.4pt; border-width: initial 1pt 1pt initial;" valign="top" width="144"><pre><span lang="EN-US"> </span></pre></td><td style="width: 108pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-bottom-color: windowtext; border-right-color: windowtext; padding: 0cm 5.4pt; border-width: initial 1pt 1pt initial;" valign="top" width="144"><pre><span lang="EN-US"> </span></pre></td></tr><tr><td style="width: 108pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-top-width: initial; border-top-style: none; padding: 0cm 5.4pt;" valign="top" width="144"><pre><span lang="EN-US"><b>Total / Recommendation</b></span></pre></td><td style="width: 108pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-bottom-color: windowtext; border-right-color: windowtext; padding: 0cm 5.4pt; border-width: initial 1pt 1pt initial;" valign="top" width="144"><pre><span lang="EN-US"><b> </b></span></pre></td><td style="width: 108pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-bottom-color: windowtext; border-right-color: windowtext; padding: 0cm 5.4pt; border-width: initial 1pt 1pt initial;" valign="top" width="144"><pre><span lang="EN-US"><b> </b></span></pre></td><td style="width: 108pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-bottom-color: windowtext; border-right-color: windowtext; padding: 0cm 5.4pt; border-width: initial 1pt 1pt initial;" valign="top" width="144"><pre><span lang="EN-US"><b>Keycloak / SaaS / Hybrid</b></span></pre></td></tr></tbody></table>						</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-044e606 e-flex e-con-boxed e-con e-parent" data-id="044e606" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-a55fec5 elementor-widget elementor-widget-text-editor" data-id="a55fec5" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h1> </h1><h1 style="font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal;">From Decision to Deployment: A Pragmatic Pipeline</h1><p style="font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 300; font-size: 14px; font-family: Roboto, sans-serif;">Assuming Keycloak is the direction, you still need a process to avoid chaos. We recommend a pipeline that mirrors proven delivery patterns: Discovery → Assessment → Architecture → PoC → Pilot → Production → Operate. Each phase ends with a clear artifact and go/no‑go gate.</p><h1><img loading="lazy" decoding="async" data-attachment-id="8094" data-permalink="https://inero-software.com/keycloak-or-saas-idp-a-tech-leaders-guide-to-making-the-right-iam-choice/oragmatic-pipeline/" data-orig-file="https://inero-software.com/wp-content/uploads/2025/07/Oragmatic-Pipeline.png" data-orig-size="1200,246" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Oragmatic Pipeline" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2025/07/Oragmatic-Pipeline-300x62.png" data-large-file="https://inero-software.com/wp-content/uploads/2025/07/Oragmatic-Pipeline-1030x211.png" tabindex="0" role="button" class="aligncenter wp-image-8094 size-large" src="https://inero-software.com/wp-content/uploads/2025/07/Oragmatic-Pipeline-1030x211.png" alt="" width="1030" height="211" srcset="https://inero-software.com/wp-content/uploads/2025/07/Oragmatic-Pipeline-1030x211.png 1030w, https://inero-software.com/wp-content/uploads/2025/07/Oragmatic-Pipeline-300x62.png 300w, https://inero-software.com/wp-content/uploads/2025/07/Oragmatic-Pipeline-768x157.png 768w, https://inero-software.com/wp-content/uploads/2025/07/Oragmatic-Pipeline.png 1200w" sizes="(max-width: 1030px) 100vw, 1030px" /></h1><p>Discovery clarifies drivers, constraints and stakeholders. Without this, technical work drifts. Assessment inventories integrations and compliance needs, and identifies risks and skill gaps.Architecture produces the reference design, HA/DR plan and governance model. PoC attacks the riskiest assumptions first—often a tricky integration or compliance requirement. Pilot rolls out to a subset of apps/users to validate processes, comms and support.</p><p>Production rollout happens in phases with rollback strategies (blue/green, canary).</p><p>Operate means continuous monitoring, patching, upgrades and cost optimization—often where a partner can help your team breathe.</p><p> </p>						</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-17d764e e-flex e-con-boxed e-con e-parent" data-id="17d764e" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-9b32f71 elementor-widget elementor-widget-text-editor" data-id="9b32f71" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h1>Next Steps</h1><p>If your scorecard favors Keycloak, schedule a Discovery &amp; Governance workshop to align stakeholders, draft a high‑level architecture and turn assumptions into a roadmap. If you’re unsure, run a PoC targeting the top two risks. And if SaaS seems better today, design an exit strategy anyway—lock‑in is fine when it’s deliberate, not accidental.</p><p> </p>						</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-fb6022e e-flex e-con-boxed e-con e-parent" data-id="fb6022e" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-e06c810 elementor-widget elementor-widget-text-editor" data-id="e06c810" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h1>&nbsp;Ready to Validate Your Choice?</h1>
<p><span lang="EN-US"><a href="https://calendar.app.google/saTsdh7e5G3YqMQD7" target="_blank">Book a free 45‑minute Keycloak Readiness Consultation</a>. We’ll go through the seven questions together, fill out the scorecard and outline concrete next steps—whether that’s an internal PoC, a hybrid approach or a full advisory engagement.</span></p>
<p><span lang="EN-US">&nbsp;</span></p>						</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-15aa28d e-flex e-con-boxed e-con e-parent" data-id="15aa28d" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-bea0396 elementor-widget elementor-widget-text-editor" data-id="bea0396" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h1>FAQ</h1><p><strong>Is Keycloak free to use in production?</strong></p><p>Yes. The software is open source, but production‑grade IAM still requires infrastructure, operations and security work. Some organizations use managed Keycloak or a consulting partner to offload that burden.</p><p><strong>How long does a typical Keycloak deployment take?</strong></p><p>A focused PoC can be done in weeks. Larger rollouts with dozens of integrations and strict compliance tend to span several months from assessment to stable production.</p><p><strong>Can Keycloak meet NIS2/GDPR requirements?</strong></p><p>Technically yes—Keycloak offers detailed logging, fine‑grained policies and MFA, and can be hosted where you need it. Compliance still depends on governance and evidence, not just tool capabilities.</p>						</div>
				</div>
					</div>
				</div>
				</div>
		<p>Artykuł <a href="https://inero-software.com/keycloak-or-saas-idp-a-tech-leaders-guide-to-making-the-right-iam-choice/">Keycloak or SaaS IdP? A Tech Leader’s Guide to Making the Right IAM Choice</a> pochodzi z serwisu <a href="https://inero-software.com">Inero Software - Software Consulting</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">8063</post-id>	</item>
		<item>
		<title>Java 17: New features overview</title>
		<link>https://inero-software.com/java-17-overview/</link>
		
		<dc:creator><![CDATA[Andrzej Chybicki]]></dc:creator>
		<pubDate>Thu, 21 Apr 2022 12:53:22 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Company]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[java 11]]></category>
		<category><![CDATA[java 14]]></category>
		<category><![CDATA[java 15]]></category>
		<category><![CDATA[java 16]]></category>
		<category><![CDATA[java 17]]></category>
		<category><![CDATA[pattern matching]]></category>
		<category><![CDATA[records]]></category>
		<category><![CDATA[sealed modifier]]></category>
		<category><![CDATA[string]]></category>
		<category><![CDATA[switch]]></category>
		<guid isPermaLink="false">https://inero-software.com/?p=4918</guid>

					<description><![CDATA[<p>Java 17 was released in September 2021. This is the latest release of LTS (Long Term Support). This means that this version will receive updates until 2029. An earlier version of LTS (Java 11) was released in September 2018, and between these two there were new releases every six months, but not covered by extended support.</p>
<p>Artykuł <a href="https://inero-software.com/java-17-overview/">Java 17: New features overview</a> pochodzi z serwisu <a href="https://inero-software.com">Inero Software - Software Consulting</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>&nbsp;</p>
<div class="row">
<p><div class="col-sm-1"></div></p>
<p><div class="col-sm-10">
<p><img loading="lazy" decoding="async" data-attachment-id="2770" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-10-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Software" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" tabindex="0" role="button" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="75" height="75" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 75px) 100vw, 75px" /></p>
<h2><span style="color: #800080;">Java 17</span></h2>
<p>&nbsp;</p>
<p><span data-contrast="auto"><span class="TextRun SCXW189727610 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW189727610 BCX0"><span class="TextRun SCXW21457896 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW21457896 BCX0"><img loading="lazy" decoding="async" data-attachment-id="2768" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-08/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Glyph v8" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" tabindex="0" role="button" class="alignleft wp-image-2768 " src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-80x80.png" alt="" width="53" height="53" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-50x50.png 50w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png 208w" sizes="(max-width: 53px) 100vw, 53px" /></span></span></span></span></span>Java 17 was released in September 2021. This is the latest release of <strong>LTS (Long Term Support)</strong>. This means that this version will receive updated until 2029. An earlier version of LTS (Java 11) was released in September 2018, and between these two there were new releases every six months, but not covered by extended support.</p>
<p>Java was developed slowly to version 8. This appears to be due to a conservative and defensive strategy for introducing changes to the language. At a similar time to Java, the C# language was created, which was characterized by introducing additions on a regular basis to keep the language attractive and effective for programmers. Currently, the Java language is quite often extended with new functionalities but with the usual caution. We’ll cover the latest improvements between versions 11-17 in this article.</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" data-attachment-id="2770" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-10-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Software" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" tabindex="0" role="button" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="75" height="75" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 75px) 100vw, 75px" /></p>
<p>&nbsp;</p>
<h2><span style="color: #800080;">Switch modification</span></h2>
<p>&nbsp;</p>
<p>Switch in previous versions of Java looked like this:</p>
<p><img loading="lazy" decoding="async" data-attachment-id="4890" data-permalink="https://inero-software.com/?attachment_id=4890" data-orig-file="https://inero-software.com/wp-content/uploads/2022/03/Java-17-Switch-przed-update.png" data-orig-size="781,563" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Java 17 Switch przed update" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2022/03/Java-17-Switch-przed-update-300x216.png" data-large-file="https://inero-software.com/wp-content/uploads/2022/03/Java-17-Switch-przed-update.png" tabindex="0" role="button" class="aligncenter wp-image-4890 size-full" src="https://inero-software.com/wp-content/uploads/2022/03/Java-17-Switch-przed-update.png" alt="switch przed aktualizacją" width="781" height="563" srcset="https://inero-software.com/wp-content/uploads/2022/03/Java-17-Switch-przed-update.png 781w, https://inero-software.com/wp-content/uploads/2022/03/Java-17-Switch-przed-update-300x216.png 300w, https://inero-software.com/wp-content/uploads/2022/03/Java-17-Switch-przed-update-768x554.png 768w, https://inero-software.com/wp-content/uploads/2022/03/Java-17-Switch-przed-update-416x300.png 416w" sizes="(max-width: 781px) 100vw, 781px" /></p>
<p style="text-align: center;"><em>Source: Learn Java 17 with IntelliJ IDEA, https://www.youtube.com/watch?v=FP0V98S4l9w&amp;ab_channel=Java</em></p>
<p>This function is used to consider different variants of a value. Depending on the value we want to convey the appropriate information to the user. Of course, we don’t have to use Switch for this task but the Switch syntax makes the code much more readable.</p>
<p>As you can see in the image above, there is a <strong>break</strong> command after each sequence. If we don’t locate this command in a specific case the executed code will go to the next sequence. Such a mechanism allowed to handle several cases with the same code. This style is also derived from the C language, where it referred to the assembly programming method (a low-level language specific to a given family of processors). Over the years, the style of programming has changed significantly and this use of the <strong>break</strong> command, or the lack of it, is less and less used. If someone forgets to add the <strong>break</strong> commands, the code may not work as intended. Therefore, an arrow notation was invented that implies <strong>break</strong> in arrows. This makes the Switch itself more readable to the user. This is important because there is less chance of making a mistake by accident. Below you can see how this record looks like.</p>
<p><img loading="lazy" decoding="async" data-attachment-id="4891" data-permalink="https://inero-software.com/?attachment_id=4891" data-orig-file="https://inero-software.com/wp-content/uploads/2022/03/Java-17-Switch-wersja-strzalkowa.png" data-orig-size="818,575" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Java 17 Switch wersja strzałkowa" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2022/03/Java-17-Switch-wersja-strzalkowa-300x211.png" data-large-file="https://inero-software.com/wp-content/uploads/2022/03/Java-17-Switch-wersja-strzalkowa.png" tabindex="0" role="button" class="aligncenter wp-image-4891 size-full" src="https://inero-software.com/wp-content/uploads/2022/03/Java-17-Switch-wersja-strzalkowa.png" alt="switch w wersji strzałkowej" width="818" height="575" srcset="https://inero-software.com/wp-content/uploads/2022/03/Java-17-Switch-wersja-strzalkowa.png 818w, https://inero-software.com/wp-content/uploads/2022/03/Java-17-Switch-wersja-strzalkowa-300x211.png 300w, https://inero-software.com/wp-content/uploads/2022/03/Java-17-Switch-wersja-strzalkowa-768x540.png 768w, https://inero-software.com/wp-content/uploads/2022/03/Java-17-Switch-wersja-strzalkowa-427x300.png 427w" sizes="(max-width: 818px) 100vw, 818px" /></p>
<p>It is also possible to implement a return value, depending on the specific variant. This is advantageous because we can get a result that will be analysed further by the program. These features make the expression Switch much more convenient to use. So <a href="https://inero-software.com/inero-software-team-work/">developers</a> can write cleaner code that is easier to understand.</p>
<p><img loading="lazy" decoding="async" data-attachment-id="4892" data-permalink="https://inero-software.com/?attachment_id=4892" data-orig-file="https://inero-software.com/wp-content/uploads/2022/03/Java-17-Switch-zwrocenie-wartosci.png" data-orig-size="1609,372" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Java 17 Switch zwrócenie wartości" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2022/03/Java-17-Switch-zwrocenie-wartosci-300x69.png" data-large-file="https://inero-software.com/wp-content/uploads/2022/03/Java-17-Switch-zwrocenie-wartosci-1030x238.png" tabindex="0" role="button" class="aligncenter wp-image-4892 size-full" src="https://inero-software.com/wp-content/uploads/2022/03/Java-17-Switch-zwrocenie-wartosci.png" alt="" width="1609" height="372" srcset="https://inero-software.com/wp-content/uploads/2022/03/Java-17-Switch-zwrocenie-wartosci.png 1609w, https://inero-software.com/wp-content/uploads/2022/03/Java-17-Switch-zwrocenie-wartosci-300x69.png 300w, https://inero-software.com/wp-content/uploads/2022/03/Java-17-Switch-zwrocenie-wartosci-1030x238.png 1030w, https://inero-software.com/wp-content/uploads/2022/03/Java-17-Switch-zwrocenie-wartosci-768x178.png 768w, https://inero-software.com/wp-content/uploads/2022/03/Java-17-Switch-zwrocenie-wartosci-1536x355.png 1536w, https://inero-software.com/wp-content/uploads/2022/03/Java-17-Switch-zwrocenie-wartosci-1298x300.png 1298w" sizes="(max-width: 1609px) 100vw, 1609px" /></p>
<h2></h2>
<p><img loading="lazy" decoding="async" data-attachment-id="2770" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-10-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Software" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" tabindex="0" role="button" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="75" height="75" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 75px) 100vw, 75px" /></p>
<p>&nbsp;</p>
<h2><span style="color: #800080;">NullPointerExceptions</span></h2>
<p>&nbsp;</p>
<p>When programming in a language like Java, there is often a problem with no reference to an object. In earlier versions of the language, the system provided relatively accurate error information but this was not always sufficient to quickly identify the location where the error was causing the error. So far we have been able to find out that it exist at a specific line in the given file. This was problematic because there could be complicated code in one line, which made locating the mistake cumbersome. Before Java 14 the error information was as follows:</p>
<p><span style="color: #ff0000;">Exception in thread „main” java.lang.NullPointerEsception</span></p>
<p><span style="color: #ff0000;">pl.inero.ExamplesTest.NotMeaningFullNullPointerTest(ExamplesTest.java:155)</span></p>
<p>Java 14 introduces a facility that makes messages convey more precise information to programmers. This way, programmers can locate the error faster and go straight to repairing the code. An example of information about the lack of reference to the object in, after the implementation of this improvement, looks like this:</p>
<p><span style="color: #ff0000;">Cannot invoke „String.toUpperCase()” because „testOne.company” is null</span></p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" data-attachment-id="2770" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-10-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Software" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" tabindex="0" role="button" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="75" height="75" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 75px) 100vw, 75px" /></p>
<p>&nbsp;</p>
<h2><span style="color: #800080;">Improvement to String constant in Java 17</span></h2>
<p>&nbsp;</p>
<p>Java 15 introduces so-called <strong>Text Blocks</strong>. Thanks to them, entering multi-line fixed string is much more convenient. Before Java 15 you had to enter multi-line constant strings on one line and save newlines as /n. The only way to write a multi-line constant in the code on many lines (for readability) was to divide it into smaller fragments connected by the + operator.</p>
<p>In java 15 start a block of text with three quotation marks <span style="color: #008000;">“ “ “</span> and a new line. All subsequent lines up to the next sequence of three quotation marks <span style="color: #008000;">“ “ “</span> will be the contents of the constant. It is not necessary to add newlines with /n. In addition, the indents will be left-aligned as much as possible.</p>
<p>Multi-line String constant before Java 15:</p>
<pre>String beforeTextBlock = <span style="color: #339966;">"SELECT some_id, COUNT(*)</span><span style="color: #3366ff;">\n</span><span style="color: #339966;">"</span> + 
        <span style="color: #339966;">"FROM (</span><span style="color: #3366ff;">\n</span><span style="color: #339966;">"</span> + 
        <span style="color: #339966;">"         select da.some_date dd, d.id some_id</span><span style="color: #3366ff;">\n</span><span style="color: #339966;">"</span> + 
        <span style="color: #339966;">"         from some_aud da</span><span style="color: #3366ff;">\n</span><span style="color: #339966;">"</span> + 
        <span style="color: #339966;">"     ) as subq</span><span style="color: #3366ff;">\n</span><span style="color: #339966;">"</span> + 
        <span style="color: #339966;">"GROUP BY some_id</span><span style="color: #3366ff;">\n</span><span style="color: #339966;">"</span> + 
        <span style="color: #339966;">"</span><span style="color: #3366ff;">\t\t</span><span style="color: #339966;">Double</span> <span style="color: #3366ff;">\"</span><span style="color: #339966;">Double</span> <span style="color: #3366ff;">\"</span><span style="color: #339966;">quotes</span><span style="color: #3366ff;">\"\"</span> <span style="color: #339966;">test</span><span style="color: #3366ff;">\n</span><span style="color: #339966;">"</span>;</pre>
<p>Equivalent multi-line constant String after the introduction of Java 15:</p>
<pre>String withTextBlock = <span style="color: #339966;">"""</span> 
        <span style="color: #339966;">SELECT some_id, COUNT(*)</span> 
<span style="color: #339966;">        FROM (</span> 
<span style="color: #339966;">                 select da.some_date dd, d.id some_id</span> 
<span style="color: #339966;">                 from some_aud da</span> 
<span style="color: #339966;">             ) as subq</span> 
<span style="color: #339966;">        GROUP BY some_id</span> 
        <span style="color: #3366ff;">\t\t</span><span style="color: #339966;">Double „Double „quotes”” test</span> 
<span style="color: #339966;">        """</span>;</pre>
<h2></h2>
<p><img loading="lazy" decoding="async" data-attachment-id="2770" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-10-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Software" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" tabindex="0" role="button" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="75" height="75" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 75px) 100vw, 75px" /></p>
<p>&nbsp;</p>
<h2><span style="color: #800080;">Pattern Matching</span></h2>
<p>&nbsp;</p>
<p>Java 16 introduced <strong>pattern matching</strong> extension for instanceof operator. Before introducing this functionality, after successfully verifying the class of an object, in order to use its properties, you had to manually cast the object to the verified type. It looked like this:</p>
<pre><span style="color: #3366ff;">if</span>(someObject <span style="color: #3366ff;">instanceof</span> String) { 
    String someString = (String) someObject; 
    <em><span style="color: #808080;">//Operacje na zmiennej someString</span> 
</em>}</pre>
<p>However, thanks to <strong>pattern matching</strong> for instanceof we are able to express the program logic more clearly. Below you can see what the code looks like:</p>
<pre><span style="color: #3366ff;">if</span>(someObject <span style="color: #3366ff;">instanceof</span> String someString) { 
    <em><span style="color: #808080;">//Operacje na zmiennej someString</span> 
</em>}</pre>
<p>Thanks to this update, we can check if an object is an instance of a given class and define a new variable that we assign to the Spring type with one notation:</p>
<p><em>someObject <span style="color: #3366ff;">instanceof</span> <span style="color: #ff0000;">String</span> someString</em></p>
<p>This provision:</p>
<ol>
<li>Checks if someObject is an instance of the <span style="color: #ff0000;">String</span> class,</li>
<li>cast someObject to the <span style="color: #ff0000;">String</span> type,</li>
<li>and assigns a <span style="color: #ff0000;">String</span> object to the variable someString.</li>
</ol>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" data-attachment-id="2770" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-10-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Software" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" tabindex="0" role="button" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="75" height="75" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 75px) 100vw, 75px" /></p>
<p>&nbsp;</p>
<h2><span style="color: #800080;">Records</span></h2>
<p>&nbsp;</p>
<p>Records have been introduced in Java 16. They allow easier creation of classes for data models. Records automatically implement equals(), hashCode(), toString() and field accessors.</p>
<p>Thanks to this, instead of describing the class with data like this:</p>
<pre><span style="color: #3366ff;">public final class</span> NoRecordClass { 
    <span style="color: #3366ff;">private final</span> String <span style="color: #e000e0;">title</span>; 
    <span style="color: #3366ff;">private final</span> String <span style="color: #e000e0;">author</span>; 

    <span style="color: #3366ff;">public</span> <span style="color: #008080;">NoRecordClass</span>(String title, String author, String isbn) { 
        <span style="color: #3366ff;">this</span>.<span style="color: #e000e0;">title</span> = title; 
        <span style="color: #3366ff;">this</span>.<span style="color: #e000e0;">author</span> = author; 
    } 

    <span style="color: #3366ff;">public</span> String <span style="color: #008080;">getTitle</span>() { 
        <span style="color: #3366ff;">return</span> <span style="color: #e000e0;">title</span>; 
    } 

    <span style="color: #3366ff;">public</span> String <span style="color: #008080;">getAuthor</span>() { 
        <span style="color: #3366ff;">return</span> <span style="color: #e000e0;">author</span>; 
    } 

    <span style="color: #c7a20e;">@Override</span> 
    <span style="color: #3366ff;">public boolean</span> equals(Object o) { 
        <span style="color: #3366ff;">if</span> (<span style="color: #3366ff;">this</span> == o) <span style="color: #3366ff;">return true</span>; 
        <span style="color: #3366ff;">if</span> (o == <span style="color: #3366ff;">null</span> || getClass() != o.getClass()) <span style="color: #3366ff;">return false</span>; 
        NoRecordClass book = (NoRecordClass) o; 
        <span style="color: #3366ff;">return</span> Objects.<em>equals</em>(<span style="color: #e000e0;">title</span>, book.<span style="color: #e000e0;">title</span>) 
                &amp;&amp; Objects.<em>equals</em>(<span style="color: #e000e0;">author</span>, book.<span style="color: #e000e0;">author</span>); 
    } 

    <span style="color: #c7a20e;">@Override</span> 
   <span style="color: #3366ff;"> public int</span> <span style="color: #008080;">hashCode</span>() { 
       <span style="color: #3366ff;"> return</span> Objects.<em>hash</em>(<span style="color: #e000e0;">title</span>, <span style="color: #e000e0;">author</span>); 
    } 
}</pre>
<p>We can use such a short notation:</p>
<pre><span style="color: #3366ff;">public record</span> RecordExample(String title, String author) { 
}</pre>
<p>Note that for a Java 16 record the accessors differ from those shown in the previous sample – to get the value corresponding to the title field in NoRecordClass use the getTitle() method. However, for the RecordExample class use the title() method, that was generated at compile time. As you can see, the difference is that the accessors generated for the record do not have the prefix get. For this reason, the records do not follow the Java Beans encoding convention. According to the <a href="https://openjdk.java.net/jeps/395">JEP 395</a> document, the records are primarily to play the role of the so-called named tuple rather than the easier creation of immutable Java Beans. The difference is rather subtle but it can make it incompatible with some older libraries.</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" data-attachment-id="2770" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-10-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Software" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" tabindex="0" role="button" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="75" height="75" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 75px) 100vw, 75px" /></p>
<p>&nbsp;</p>
<h2><span style="color: #800080;">Sealed modifier in Java 17</span></h2>
<p>&nbsp;</p>
<p>The last functionality we describe is especially useful for library creators. It is used to control what classes/interfaces can inherit or implement a given class/interface. Thanks to this, no unauthorized person can connect his class to our library. Below you will find what such a record looks like:</p>
<pre><span style="color: #3366ff;">public sealed interface</span> SealedInterface 
        <span style="color: #3366ff;">permits</span> ImplementationNo1, 
                ImplementationNo2, 
                ImplementationNo3 { 
    <span style="color: #3366ff;">int</span> <span style="color: #008080;">getNumber</span>(); 
    String <span style="color: #008080;">getText</span>(); 
    List&lt;String&gt; <span style="color: #008080;">getStrings</span>(); 
}</pre>
<p>&nbsp;</p>
<h2><img loading="lazy" decoding="async" data-attachment-id="2770" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-10-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Software" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" tabindex="0" role="button" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="75" height="75" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 75px) 100vw, 75px" /></h2>
<p>&nbsp;</p>
<h2><span style="color: #800080;">Summary</span></h2>
<p>&nbsp;</p>
<p><strong>Java 17</strong> doesn’t actually provide any spectacular modifications. In fact, it stabilizes the changes that occurred during version 12-16. However, we can point out a few fixes that will definitely improve the work of programmers. This is primarily about: <strong>records, switch, pattern matching, sealed modifier or text blocks</strong>. Java 17 is definitely a big step forward, mainly because it is an LTS version, Thanks to this, developers will be able to count on ongoing support for the functionalities mentioned in this article.</p>
<p><a href="https://inero-software.com/contact-us/"><strong><span style="color: #800080;">Inero Software</span></strong></a> provides knowledge and expertise on how to successfully use cutting edge technologies and data to shape corporate digital products of the future.</p>
<p><span data-contrast="auto">In the <a href="https://inero-software.com/category/blog/company/"><strong><span style="color: #800080;">blog post</span></strong></a> section you will find other articles about IT systems and more!</span></p>
<p><strong>Consulted by: Tomasz Bieliński.</strong></p>
<p></p></div><br />
</p></div>
<p>Artykuł <a href="https://inero-software.com/java-17-overview/">Java 17: New features overview</a> pochodzi z serwisu <a href="https://inero-software.com">Inero Software - Software Consulting</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4918</post-id>	</item>
		<item>
		<title>Building a custom voice command recognition system</title>
		<link>https://inero-software.com/building-a-voice-command-recognition-system/</link>
		
		<dc:creator><![CDATA[Andrzej Chybicki]]></dc:creator>
		<pubDate>Mon, 28 Mar 2022 14:12:11 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Company]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[ASR models]]></category>
		<category><![CDATA[deepspeech]]></category>
		<category><![CDATA[language model]]></category>
		<category><![CDATA[neural networks]]></category>
		<category><![CDATA[voice command recognition]]></category>
		<category><![CDATA[voice recognition system]]></category>
		<guid isPermaLink="false">https://inero-software.com/?p=4795</guid>

					<description><![CDATA[<p>The voice recognition system plays the role of an assistant that will find appropriate information for us, facilitate online shopping or enable the operation of various devices without the use of external buttons or adjustments.</p>
<p>Artykuł <a href="https://inero-software.com/building-a-voice-command-recognition-system/">Building a custom voice command recognition system</a> pochodzi z serwisu <a href="https://inero-software.com">Inero Software - Software Consulting</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>&nbsp;</p>
<div class="row">
<p><div class="col-sm-1"></div></p>
<p><div class="col-sm-10">
<p><img loading="lazy" decoding="async" data-attachment-id="2770" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-10-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Software" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" tabindex="0" role="button" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="75" height="75" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 75px) 100vw, 75px" /></p>
<p>&nbsp;</p>
<h2><span style="color: #800080;">How to build your own custom voice command recognition system?</span></h2>
<p>&nbsp;</p>
<p><span data-contrast="auto"><span class="TextRun SCXW189727610 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW189727610 BCX0"><span class="TextRun SCXW21457896 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW21457896 BCX0"><img loading="lazy" decoding="async" data-attachment-id="2768" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-08/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Glyph v8" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" tabindex="0" role="button" class=" wp-image-2768 alignleft" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" alt="" width="71" height="71" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-50x50.png 50w" sizes="(max-width: 71px) 100vw, 71px" /></span></span></span></span></span>The concept of voice assistant was created to improve human life. It plays the role of an tool which will find appropriate information for us, facilitate online shopping or manage the operation of various devices without any pressing or regulating. However, creating such a system from scratch can be a difficult challenge. Especially if we want to build it in language other than english.</p>
<p>There are general models of neural networks that are dedicated to spoken language recognition, i.e. transcription from audio to text. Everything depends on how much data we have. Nowadays, there are many recordings of the English language that are decently prepared. However, data alone is not enough. Transcripts must be attached to them. Unfortunately, in Polish we do not have a many voice samples with transcripts. So today we are not able to teach models as well as it is done in English.</p>
<p>So far, we cannot train assistants using open source models with satisfactory effectiveness, but we can check what we are able to build from generally available data. The goal of our work is to create a speech recognition system that actually works.</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" data-attachment-id="2770" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-10-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Software" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" tabindex="0" role="button" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="75" height="75" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 75px) 100vw, 75px" /></p>
<p>&nbsp;</p>
<h2><span style="color: #800080;">Preparation and standardization of data for voice command recognition system</span></h2>
<p>&nbsp;</p>
<p><span data-contrast="auto"><span class="TextRun SCXW189727610 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW189727610 BCX0"><span class="TextRun SCXW21457896 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW21457896 BCX0"><img loading="lazy" decoding="async" data-attachment-id="2768" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-08/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Glyph v8" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" tabindex="0" role="button" class=" wp-image-2768 alignleft" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" alt="" width="71" height="71" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-50x50.png 50w" sizes="(max-width: 71px) 100vw, 71px" /></span></span></span></span></span>First, we need to ensure the minimum and maximum length of the recording. They must be within a certain time frame. Long recording may be a problem when training the model, while short recording may not carry any relevant information. We also need to ensure that the signal is sampled at the same rate. This is an important point when we are teaching sound based models.</p>
<p>A pure tone sound wave propagating in space is sinusoidal. Changing the frequency of such a sound means a change in the period of the sinusoid, so the distances between its crests change. However, the sound in the computer also has to be presented in some way. The sine wave is continuous and the computer stores individual values. The sampling rate tells us how many times per second the value of the sound wave was recorded. It is important that each sound that enters our model has the same sampling rate.</p>
<p>Due to incorrect sampling the reconstructed sound can be distorted or completely inaudible. Therefore, it is necessary to remember about the appropriate selection of the sampling frequency to minimize the size of the saved data with the simultaneous lack of information loss. Sampling too rarely can cause aliasing, i.e. the overlap between higher frequencies and lower frequencies. For example, a sound that is a mechanical sinusoidal wave with a frequency of 3 Hz may be misinterpreted as a lower frequency signal. This situation is presented in the figure below, in which a sinusoidal signal with a frequency of 5 Hz was interpreted as a signal with a frequency of 1 Hz due to a too low sampling frequency.</p>
<p><img loading="lazy" decoding="async" data-attachment-id="4796" data-permalink="https://inero-software.com/building-a-voice-command-recognition-system/picture1-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2022/03/Picture1.jpg" data-orig-size="454,340" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Picture1" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2022/03/Picture1-300x225.jpg" data-large-file="https://inero-software.com/wp-content/uploads/2022/03/Picture1.jpg" tabindex="0" role="button" class="aligncenter wp-image-4796 size-full" src="https://inero-software.com/wp-content/uploads/2022/03/Picture1.jpg" alt="interpretation of sinusoidal signal" width="454" height="340" srcset="https://inero-software.com/wp-content/uploads/2022/03/Picture1.jpg 454w, https://inero-software.com/wp-content/uploads/2022/03/Picture1-300x225.jpg 300w, https://inero-software.com/wp-content/uploads/2022/03/Picture1-401x300.jpg 401w" sizes="(max-width: 454px) 100vw, 454px" /></p>
<p style="text-align: center;"><em>Source: </em><a href="https://pbc.gda.pl/dlibra/publication/109835/edition/98484/content"><em>Reprezentacje danych dźwiękowych w kontekście metod uczenia maszynowego</em></a><em>, Tymoteusz Cejrowski</em></p>
<p>This is prevented by sampling the signal at a frequency of at least twice the highest frequency in the signal. This is called the Nyquist frequency. For example, recording on CDs are saved at a sampling rate of 44100 Hz. On the other hand, the maximum correctly reconstructed frequency will be 22050 Hz, which corresponds to the upper range of sounds audible by humans.</p>
<p><img loading="lazy" decoding="async" data-attachment-id="2770" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-10-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Software" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" tabindex="0" role="button" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="75" height="75" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 75px) 100vw, 75px" /></p>
<p>&nbsp;</p>
<h2><span lang="EN-US" style="color: #800080;">Description and teaching of the deepspeech model</span></h2>
<p>&nbsp;</p>
<p><span data-contrast="auto"><span class="TextRun SCXW189727610 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW189727610 BCX0"><span class="TextRun SCXW21457896 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW21457896 BCX0"><img loading="lazy" decoding="async" data-attachment-id="2768" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-08/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Glyph v8" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" tabindex="0" role="button" class=" wp-image-2768 alignleft" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" alt="" width="48" height="48" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-50x50.png 50w" sizes="(max-width: 48px) 100vw, 48px" /></span></span></span></span></span>Neural networks are somewhat like the nervous system. The basic units in such networks are neurons, which are arranged in layers. It is a simplified model of information processing by the human mind.</p>
<p>Typically, a neural network consists of three parts. The first is the input layer which has units representing the input variables. The next part is the hidden layers that contain the unobserved entities and are the hidden state of the neural network. It is on these layers that the efficiency of the model largely depends. The last part, of course, is the output layer, which has units representing the targets. All interconnected units are specific connections of different weights. The input data is on the first later, it goes through the next layer, and finally we get the result from the output layer.</p>
<p>The neural network can learn by comparing records. It generates predictions for specific data (audio recordings) and introduces weights adjustments if the generate an incorrect prediction (wrong transcription). The whole process is repeated many times until the accuracy is satisfactory. All weights are random at first and outgoing responses don’t make such sense, while the network improves its predictions over time. This is because the network adapts to the data as it learns.</p>
<p>One of the simplest models of Neural Networks is the <strong>Multilayer Perceptron</strong>. It consists of many neural layers. The neurons of the previous layer form a specific vector that is fed to the entry of neurons into the next layer. A single neuron in the next layer has the number of inputs equal to the number of neurons in the previous layer +1. However, within one layer, the neurons do not have any connections with each other. This type of model is also known as the “Feed-Forward” model and is one of the fundamental architectures of neural networks.</p>
<p><img loading="lazy" decoding="async" data-attachment-id="4797" data-permalink="https://inero-software.com/building-a-voice-command-recognition-system/picture2-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2022/03/Picture2-1.png" data-orig-size="361,461" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Picture2" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2022/03/Picture2-1-235x300.png" data-large-file="https://inero-software.com/wp-content/uploads/2022/03/Picture2-1.png" tabindex="0" role="button" class="aligncenter wp-image-4797 size-full" src="https://inero-software.com/wp-content/uploads/2022/03/Picture2-1.png" alt="feed-forward model" width="361" height="461" srcset="https://inero-software.com/wp-content/uploads/2022/03/Picture2-1.png 361w, https://inero-software.com/wp-content/uploads/2022/03/Picture2-1-235x300.png 235w" sizes="(max-width: 361px) 100vw, 361px" /></p>
<p style="text-align: center;"><em>Figure representing the “Feed-Forward” model.</em></p>
<p><strong>Recursive networks</strong> differ from Feed-Forward networks in many respects. One of the main differences is how the input data is propagated to the output of the network. In the simplest model, the network output is nothing but a combination of weights and the model input (single record). For recursive networks, the model output also depends on the previous output. The result of the model operation for the X record is taken into account when calculating the output for the next Y record.</p>
<p>A <strong>convolutional neural network</strong> is the type of network most commonly used for visual image analysis due to its input processing nature. Like a human, this network does not analyse the image pixel by pixel, but captures the patterns present in the input thanks to the use of the so-called Kernels or filters. Each layer in the neural network learns image characteristics such as contours and light saturation. Submitting this information improves the efficiency of the model.</p>
<p>However, it is worth looking at open source systems that enable the creation of voice command recognition. One of them is <a href="https://kaldi-asr.org"><strong>Kaldi</strong></a>, which was written in C++. It was created in 2009 and its main features are that the system is extensible. The community itself provides many other modules that you can use for your own tasks. Kaldi also supports deep neural networks. Although it is written mainly in C++, it has Bash and Python scripts.</p>
<p>For the construction of the voice command recognition system, we focused on the <a href="https://github.com/SeanNaren/deepspeech.pytorch"><strong>deepspeech 2</strong></a> model. It uses deep learning and it consists of 3 convolutional layers, 8 recursive layers and one Fully-Connected (described as Feed-Forward). Deepspeech 2 can be successfully trained in any language, but you have to remember that models are most often issued only with code, so you have to learn them yourself. For popular languages such as English and Mandarin, there are pre-trained ready-to-use models. For our assignment, we chose deepspeech 2 with a <a href="https://github.com/SeanNaren/deepspeech.pytorch">PyTorch</a> implementation because it is lightweight, relatively few parameters (weights to learn), and is actively maintained. In this model, in addition to preparing the appropriate sampling frequencies about which we wrote above, we also had to prepare the data for the deepspeech model itself. This was related to the provision of an appropriate directory structure.</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" data-attachment-id="2770" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-10-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Software" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" tabindex="0" role="button" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="75" height="75" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 75px) 100vw, 75px" /></p>
<p>&nbsp;</p>
<h2><span lang="EN-US" style="color: #800080;">Reasoning with the use of ASR models and an additional language model</span></h2>
<p>&nbsp;</p>
<p><span data-contrast="auto"><span class="TextRun SCXW189727610 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW189727610 BCX0"><span class="TextRun SCXW21457896 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW21457896 BCX0"><img loading="lazy" decoding="async" data-attachment-id="2768" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-08/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Glyph v8" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" tabindex="0" role="button" class=" wp-image-2768 alignleft" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" alt="" width="101" height="101" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-50x50.png 50w" sizes="(max-width: 101px) 100vw, 101px" /></span></span></span></span></span>Using deepspeech we are able to apply an additional language model (n-gram model). It is based on statistics and helps predict the next element in the sequence. It must be remembered that the application of such a model requires the collection of a large amount of statistical data. N-grams help machines understand a word in a specific context. This allows them to understand its purpose better. So if you want to build an effective voice command recognition system, it is worth considering.</p>
<p>If we want to create such a model, we start by counting the occurrences of a sequence of a fixed length in the existing linguistic resources. Therefore, whole texts are analysed and single occurrences (1 gram) twos (2 grams) and triples (3 grams) are counted. We can also obtain a 4-gram model, but here huge sets of data are needed, which makes it challenging for the Polish language to implement.</p>
<p>Then you convert the number of occurrences into probability by normalizing. In this way, we obtain the prediction of the next element based on the sequences so far. The more text we analyse, the higher the quality of the model will be. This data is used in natural language processing (NLP) applications. However, there are methods that allow n-gram models to be improved by smoothing the collected statistics. This model is primarily characterized by scalability. We can choose a schema without a lot of data, but then it will be less predictive. The n-gram model for the Polish language can be found <a href="https://zasobynauki.pl/zasoby/model-jezykowy-dla-jezyka-polskiego,55644/">here</a>.</p>
<p>The use of the n-gram model at the inference stage allows to correct the output of the neural network (transcription of the deepspeech 2 model) in accordance with the rules contained in the n-gram model.</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" data-attachment-id="2770" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-10-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Software" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" tabindex="0" role="button" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="75" height="75" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 75px) 100vw, 75px" /></p>
<p>&nbsp;</p>
<h2><span lang="EN-US" style="color: #800080;">Operation on a limited set of commands</span></h2>
<p>&nbsp;</p>
<p><span data-contrast="auto"><span class="TextRun SCXW189727610 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW189727610 BCX0"><span class="TextRun SCXW21457896 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW21457896 BCX0"><img loading="lazy" decoding="async" data-attachment-id="2768" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-08/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Glyph v8" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" tabindex="0" role="button" class=" wp-image-2768 alignleft" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" alt="" width="101" height="101" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-50x50.png 50w" sizes="(max-width: 101px) 100vw, 101px" /></span></span></span></span></span>Unfortunately, the models built cannot be learned well enough due to the small amount of data in a language we work in &#8211; Polish. In our case, we can operate in a limited set of commands. This means that a specific number of voice commands will be recognized. Our task was to match the appropriate command from the set with what the model provides us. It is important here to define the highest similarity between the command and what the model returned to us.</p>
<p>For this task, we used a metric called <strong>Levenshtein distance</strong>, which indicates the similarity between the transcript and a given command. It consists of counting items or letters that do not match. For example, the Levenshtein distance between the terms:</p>
<ul>
<li>Gravity</li>
<li>Gravity</li>
</ul>
<p>Is zero. These words are identical, so no action is required here.</p>
<p>On the other hand, the Levenshtein distance between the words:</p>
<ul>
<li>Long</li>
<li>Pork</li>
</ul>
<p>Is 3, because it takes at least 3 actions: replace <strong>L</strong> with <strong>P</strong>, replace <strong>n </strong>with <strong>r</strong>, and replace<strong> g</strong> with <strong>k</strong>.</p>
<p>Where there are fewest substitutions, we have the greatest probability that the commands are the same.</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" data-attachment-id="2770" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-10-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Software" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" tabindex="0" role="button" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="75" height="75" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 75px) 100vw, 75px" /></p>
<p>&nbsp;</p>
<h2><span style="color: #800080;">Summary</span></h2>
<p>&nbsp;</p>
<p><span data-contrast="auto"><span class="TextRun SCXW189727610 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW189727610 BCX0"><span class="TextRun SCXW21457896 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW21457896 BCX0"><img loading="lazy" decoding="async" data-attachment-id="2768" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-08/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Glyph v8" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" tabindex="0" role="button" class=" wp-image-2768 alignleft" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" alt="" width="101" height="101" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-50x50.png 50w" sizes="(max-width: 101px) 100vw, 101px" /></span></span></span></span></span>The purpose of voice recognition systems is to ensure ease of communication between the device and the human being. Speech recognition technology is already a part of our daily lives. For now, it is limited to relatively simple commands. Building such a system based on data in the Polish language is a difficult task due to the small amount of data. Taking into account the current trends in the use of smart devices and technical possibilities, it is worth exploring the potential of these systems.</p>
<p><a href="https://inero-software.com/contact-us/"><strong><span style="color: #800080;">Inero Software</span></strong></a> provides knowledge and expertise on how to successfully use cutting edge technologies and data to shape corporate digital products of the future.</p>
<p><span data-contrast="auto">In the <a href="https://inero-software.com/category/blog/company/"><strong><span style="color: #800080;">blog post</span></strong></a> section you will find other articles about IT systems and more!</span></p>
<p><strong>Consulted by: Tymoteusz Cejrowski, Software Developer.</strong></p>
<p></p></div><br />
</p></div>
<p>Artykuł <a href="https://inero-software.com/building-a-voice-command-recognition-system/">Building a custom voice command recognition system</a> pochodzi z serwisu <a href="https://inero-software.com">Inero Software - Software Consulting</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4795</post-id>	</item>
		<item>
		<title>Digital identity in the era of remote work and pandemic</title>
		<link>https://inero-software.com/digital-identity-in-the-era-of-remote-work-and-pandemic/</link>
		
		<dc:creator><![CDATA[Andrzej Chybicki]]></dc:creator>
		<pubDate>Tue, 15 Mar 2022 08:42:09 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Company]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[digital identity]]></category>
		<category><![CDATA[IAM]]></category>
		<category><![CDATA[remote work]]></category>
		<category><![CDATA[SSO]]></category>
		<guid isPermaLink="false">https://inero-software.com/?p=3917</guid>

					<description><![CDATA[<p>IAM is a tool that provides effective management of access to information resources. With this solution you can handle the requests of newly hired employees. The identity and access management system also helps in administering users who have parted ways or changed their status with company. With IAM changing or expiring their permissions is much easier.</p>
<p>Artykuł <a href="https://inero-software.com/digital-identity-in-the-era-of-remote-work-and-pandemic/">Digital identity in the era of remote work and pandemic</a> pochodzi z serwisu <a href="https://inero-software.com">Inero Software - Software Consulting</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="row">
<p><div class="col-sm-1"></div></p>
<p><div class="col-sm-10">
<p><img loading="lazy" decoding="async" data-attachment-id="2770" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-10-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Software" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" tabindex="0" role="button" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="91" height="91" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 91px) 100vw, 91px" /></p>
<p>&nbsp;</p>
<p><span data-contrast="auto"><span class="TextRun SCXW252288117 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW252288117 BCX0"><img loading="lazy" decoding="async" data-attachment-id="2873" data-permalink="https://inero-software.com/digital-twins-a-dynamic-software-model-of-reality/inero-glify-08-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="inero-glyph" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png" tabindex="0" role="button" class=" wp-image-2873 alignleft" src="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png" alt="" width="99" height="99" srcset="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png 208w, https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08-50x50.png 50w" sizes="(max-width: 99px) 100vw, 99px" /></span></span>Working from remote locations, recently has became a standard in many companies. During past few years we have learnt to utilize most of our IT systems, programs and tools remotely such as Office, Outlook, Microsoft Teams, Google Meets, Google Work Space or Google Docs, documentation flow systems or others. Due to significant physical distance to used IT infrastructure, the access to these tools must be properly secured and configured to allow efficient use but third parties, suppliers or other employees have limited access to what you do, in accordance with company’s security policy. Such access is most often implemented in programs through a system of individual accounts in which everyone uses individual logins and passwords.<br />
</span></p>
<p><span data-doc-id="1194296000000031001" data-doc-type="writer">In large corporate teams with employees working in different locations, this issue is even more important. Although people employed in such teams work in different countries or time zones, many resources must be synchronized with each other and unified access to them improves work, facilitates communication and <a href="https://inero-software.com/inero-software-team-work/">team</a> management.</span></p>
<p class="zw-paragraph heading0" data-header="0" data-textformat="{&quot;size&quot;:&quot;12.00&quot;,&quot;fgc&quot;:&quot;rgb(0, 0, 0)&quot;,&quot;type&quot;:&quot;text&quot;}" data-margin-bottom="12pt" data-margin-top="12pt" data-hd-info="0" data-line-height="1.2" data-doc-id="1194296000000031001" data-doc-type="writer">Examples of such systems include e-mails, email responders, instant messaging, invoicing, document management systems and many more. In this context, problems appear when the same person needs and access to two or more systems, for example, a contract management tool and document flow management systems. While having many similar situation, hierarchical privileges managements, various systems, remembering several logins and passwords may be confusing for some employees. The desired scenario in such case would be to have on logging gateway that would allow for access to different resources.</p>
<p class="zw-paragraph heading0" data-header="0" data-textformat="{&quot;size&quot;:&quot;12.00&quot;,&quot;fgc&quot;:&quot;rgb(0, 0, 0)&quot;,&quot;type&quot;:&quot;text&quot;}" data-margin-bottom="12pt" data-margin-top="12pt" data-hd-info="0" data-line-height="1.2" data-doc-id="1194296000000031001" data-doc-type="writer"><span style="color: #800080;"><b style="color: #800080;"> Here comes </b><span style="color: #800080;"><b>digital</b></span><b style="color: #800080;"> identity management!</b></span><br />
When an employee logs into the companies resources, he wants to have one digital credentials (i.e. login &amp; password), because in fact he represents the same person in each of these systems. He is also a subject to a specific group of authorizations and rights resulting from the assigned position, duties and other. In such cases <strong><a href="https://inero-software.com/logistics-solutions/cyber-security/">Identity and Access Management (IAM)</a> </strong>are a perfect choice!</p>
<p class="zw-paragraph heading0" data-header="0" data-textformat="{&quot;size&quot;:&quot;12.00&quot;,&quot;fgc&quot;:&quot;rgb(0, 0, 0)&quot;,&quot;type&quot;:&quot;text&quot;}" data-margin-bottom="12pt" data-margin-top="12pt" data-hd-info="0" data-line-height="1.2">Digital identity is a collection of individual credentials (mostly logins and passwords) that as users, we use in various structures. When we use many systems, we have a lot of credentials. In the long run, this can be troublesome, especially in situations when we forget one of the passwords, because we will need to recover them later. In this case, it is difficult for both users and administrators to manage it.</p>
<p>IAM is a tool that provides effective management of access to information resources. With this solution you can handle the requests of newly hired employees. The identity and access management system also helps in administering users who have parted ways or changed their status with company. With IAM changing or expiring their permissions is much easier.</p>
<p><span data-doc-id="1194296000000031001" data-doc-type="writer">One of the most frequent concepts in the development of IAM is the concept of <strong><a href="https://inero-software.com/logistics-solutions/cyber-security/">SSO (Single-Sign-On)</a></strong>. It’s a set of systems in which we have one common login point and one common module for managing users and their authorization to all systems. They allow us to manage digital identity in one place. We have one login and password for many systems to which we can log in with the same credentials.</span></p>
<p>&nbsp;</p>
<h6><span style="color: #800080;"><span class="TextRun SCXW123869379 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW123869379 BCX0" data-ccp-charstyle="Emphasis">Impact of COVID-19 on Integrated Authorization Management</span></span><span class="EOP SCXW123869379 BCX0" data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></span></h6>
<p>&nbsp;</p>
<p><span class="TextRun SCXW252288117 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW252288117 BCX0"><span data-contrast="auto"><img loading="lazy" decoding="async" data-attachment-id="2873" data-permalink="https://inero-software.com/digital-twins-a-dynamic-software-model-of-reality/inero-glify-08-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="inero-glyph" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png" tabindex="0" role="button" class=" wp-image-2873 alignleft" src="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png" alt="" width="75" height="75" srcset="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png 208w, https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08-50x50.png 50w" sizes="(max-width: 75px) 100vw, 75px" /></span>In the last two years,</span> <span class="NormalTextRun SCXW252288117 BCX0">IAM systems have been increasingly used due to the need for remote or hybrid work.</span><span class="NormalTextRun SCXW252288117 BCX0"> IAM is of utmost importance in supporting and securing digital resources. Tools like this provide basic authentication and authorization to secure employee data. This goal can be achieved through access management (Multi-Factor Authentication), enabling enterprises to provide end-user authentication to multiple systems.</span></span><span class="EOP SCXW252288117 BCX0" data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" data-attachment-id="2770" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-10-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Software" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" tabindex="0" role="button" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="91" height="91" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 91px) 100vw, 91px" /></p>
<p>&nbsp;</p>
<h2><span style="color: #800080;"><span class="TextRun SCXW48701521 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="none"><span class="NormalTextRun SCXW48701521 BCX0" data-ccp-parastyle="heading 2">When </span><span class="NormalTextRun SCXW48701521 BCX0" data-ccp-parastyle="heading 2">is Identity and Access Management important?</span></span><span class="EOP SCXW48701521 BCX0" data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}"> </span></span></h2>
<p>&nbsp;</p>
<p><span class="TextRun SCXW243527011 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW243527011 BCX0"><span class="TextRun SCXW252288117 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW252288117 BCX0"><span data-contrast="auto"><img loading="lazy" decoding="async" data-attachment-id="2873" data-permalink="https://inero-software.com/digital-twins-a-dynamic-software-model-of-reality/inero-glify-08-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="inero-glyph" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png" tabindex="0" role="button" class=" wp-image-2873 alignleft" src="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png" alt="" width="67" height="67" srcset="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png 208w, https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08-50x50.png 50w" sizes="(max-width: 67px) 100vw, 67px" /></span></span></span><span data-doc-id="1194296000000031001" data-doc-type="writer">Digital identity management actually always happens when we use our unique login. A simple example of using a digital identity is integrating a Google account with the Chrome browser. In the case of corporate solutions, our identity must be better authenticated, so each time we log into the system we have to enter our login and password. Digital identity management occurs when we want to have access to information that is intended only for us, or it requires our interactions.</span><br />
</span></span></p>
<blockquote>
<p style="text-align: center;"><span style="color: #800080;"><span class="TextRun SCXW89077872 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="none"><span class="NormalTextRun SCXW89077872 BCX0" data-ccp-parastyle="Intense Quote">“According to a report by Verizon Data Breach Investigation, more than 70% of employees re-use their passwords at work. The report found that 81% of hacking breaches used stolen or weak passwords</span><span class="NormalTextRun SCXW89077872 BCX0" data-ccp-parastyle="Intense Quote">.</span><span class="NormalTextRun SCXW89077872 BCX0" data-ccp-parastyle="Intense Quote">”</span></span></span></p>
</blockquote>
<p>&nbsp;</p>
<p><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><strong>The basic principle of creating IAM systems is not to create new security solutions</strong> but above all, to use standards and proven security methods instead. Tools that allow us to use standard approaches to ensure the safety and convenience of use in authorization for various connection scenarios of various systems, including: </span></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Azure B2C</span><span data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">OAuth2</span><span data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">Open ID Connect</span><span data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1"><span data-contrast="auto">Identity Server</span><span data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1" data-aria-posinset="5" data-aria-level="1"><span data-contrast="auto">Active Directory</span><span data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1" data-aria-posinset="5" data-aria-level="1"><span data-contrast="auto">KeyCloak</span><span data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1" data-aria-posinset="5" data-aria-level="1"><span data-contrast="auto">Amazon Cognito</span><span data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1" data-aria-posinset="5" data-aria-level="1"><span data-contrast="auto">Google IAM</span><span data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
</ul>
<p><span data-contrast="auto">When mentioning digital identity management, it is necessary to indicate the differences between authorization and authentication. Authorization allows access to confirm whether a given person is allowed to use a resource (e.g. a function or database), and authentication means confirming the identity.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><img loading="lazy" decoding="async" data-attachment-id="3929" data-permalink="https://inero-software.com/digital-identity-in-the-era-of-remote-work-and-pandemic/rynek-2-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2022/01/rynek-2-1.png" data-orig-size="1920,1020" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="rynek 2" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2022/01/rynek-2-1-300x159.png" data-large-file="https://inero-software.com/wp-content/uploads/2022/01/rynek-2-1-1030x547.png" tabindex="0" role="button" class="aligncenter wp-image-3929" src="https://inero-software.com/wp-content/uploads/2022/01/rynek-2-1-300x159.png" alt="overview how SSO works" width="913" height="484" srcset="https://inero-software.com/wp-content/uploads/2022/01/rynek-2-1-300x159.png 300w, https://inero-software.com/wp-content/uploads/2022/01/rynek-2-1-1030x547.png 1030w, https://inero-software.com/wp-content/uploads/2022/01/rynek-2-1-768x408.png 768w, https://inero-software.com/wp-content/uploads/2022/01/rynek-2-1-1536x816.png 1536w, https://inero-software.com/wp-content/uploads/2022/01/rynek-2-1-565x300.png 565w, https://inero-software.com/wp-content/uploads/2022/01/rynek-2-1.png 1920w" sizes="(max-width: 913px) 100vw, 913px" /></p>
<p><img loading="lazy" decoding="async" data-attachment-id="2770" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-10-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Software" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" tabindex="0" role="button" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="91" height="91" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 91px) 100vw, 91px" /></p>
<p>&nbsp;</p>
<h2><span style="color: #800080;"><span class="TextRun SCXW130135859 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="none"><span class="NormalTextRun SCXW130135859 BCX0" data-ccp-parastyle="heading 2">5 benefits of IAM</span></span></span></h2>
<p>&nbsp;</p>
<h6><i><span data-contrast="none"><img loading="lazy" decoding="async" data-attachment-id="1574" data-permalink="https://inero-software.com/?attachment_id=1574" data-orig-file="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="inero-software-glify-02" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" data-large-file="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" tabindex="0" role="button" class=" wp-image-1574 alignleft" src="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" alt="" width="63" height="63" srcset="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png 208w, https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02-80x80.png 80w" sizes="(max-width: 63px) 100vw, 63px" />Increasing <a href="https://inero-software.com/logistics-solutions/cyber-security/">cyber</a></span></i> <em>security</em><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></h6>
<p><span data-contrast="auto">Thanks to IAM solutions, companies can implement security policies in all connected systems. Administrators using such tools can easily remove unwanted access permissions when needed, by providing one consistent system of accounts and passwords.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<h6><i style="font-family: 'Open Sans'; font-size: 12px; font-weight: bold; text-transform: uppercase;"><span data-contrast="none"><img loading="lazy" decoding="async" data-attachment-id="1574" data-permalink="https://inero-software.com/?attachment_id=1574" data-orig-file="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="inero-software-glify-02" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" data-large-file="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" tabindex="0" role="button" class=" wp-image-1574 alignleft" src="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" alt="" width="63" height="63" srcset="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png 208w, https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02-80x80.png 80w" sizes="(max-width: 63px) 100vw, 63px" /></span></i><i><span data-contrast="none">Lower operating costs in terms of infrastructure management and IT security</span></i><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></h6>
<p><span data-doc-id="1194296000000031001" data-doc-type="writer">With integrated systems enterprises can benefit from lowering costs in IT infrastructure by minimizing the time needed to solve problems related to the user account.</span></p>
<h6><i><span data-contrast="none"><img loading="lazy" decoding="async" data-attachment-id="1574" data-permalink="https://inero-software.com/?attachment_id=1574" data-orig-file="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="inero-software-glify-02" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" data-large-file="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" tabindex="0" role="button" class=" wp-image-1574 alignleft" src="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" alt="" width="63" height="63" srcset="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png 208w, https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02-80x80.png 80w" sizes="(max-width: 63px) 100vw, 63px" /></span></i><i><span data-contrast="none">More convenient use of systems by users and administrators</span></i><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></h6>
<p><span data-contrast="auto">By implementing IAM tools, administrators are able to create a unique identity for each user. They don’t have to manage dozens of accounts for different applications or other resources. Users have access to systems regardless of their location, time or device currently used.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<h6><i><span data-contrast="none"><img loading="lazy" decoding="async" data-attachment-id="1574" data-permalink="https://inero-software.com/?attachment_id=1574" data-orig-file="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="inero-software-glify-02" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" data-large-file="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" tabindex="0" role="button" class=" wp-image-1574 alignleft" src="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" alt="" width="63" height="63" srcset="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png 208w, https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02-80x80.png 80w" sizes="(max-width: 63px) 100vw, 63px" /></span></i><i><span data-contrast="none">Easier adaptation to the regulations of corporate security policies</span></i><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></h6>
<p><span data-contrast="auto">When ordering or creating software, corporations implement security policies about what can and cannot be done in specific IT systems. If we are dealing with one account logging system, it is much easier to adapt it to security policies.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<h6><i><span data-contrast="none"><img loading="lazy" decoding="async" data-attachment-id="1574" data-permalink="https://inero-software.com/?attachment_id=1574" data-orig-file="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="inero-software-glify-02" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" data-large-file="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" tabindex="0" role="button" class=" wp-image-1574 alignleft" src="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" alt="" width="63" height="63" srcset="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png 208w, https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02-80x80.png 80w" sizes="(max-width: 63px) 100vw, 63px" /></span></i><i><span data-contrast="none">Easier password management and recovery</span></i><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></h6>
<p><span data-contrast="auto">With IAM solutions, password problems will be minimized. They help administrators implement better password management practices. We are talking about frequent updates of login credentials or stronger authentication.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" data-attachment-id="2770" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-10-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Software" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" tabindex="0" role="button" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="91" height="91" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 91px) 100vw, 91px" /></p>
<p>&nbsp;</p>
<h2><span style="color: #800080;"><span class="TextRun SCXW251658459 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="none"><span class="NormalTextRun SCXW251658459 BCX0" data-ccp-parastyle="heading 2">Identity and Access Management</span></span><span class="EOP SCXW251658459 BCX0" data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}"> </span></span></h2>
<p>&nbsp;</p>
<p><span class="EOP SCXW9908701 BCX0" data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><span data-doc-id="1194296000000031001" data-doc-type="writer">If enterprises want to keep their employees safe and increase their productivity, they should opt for integrated identity and access management. After logging into the main system, users don&#8217;t have to worry about having an appropriate password for other structures. The employee has access to the perfect set of tools to increase his productivity.</span> </span></p>
<blockquote>
<p style="text-align: center;"><span style="color: #800080;"><span class="TextRun SCXW127797215 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="none"><span class="NormalTextRun SCXW127797215 BCX0" data-ccp-parastyle="Intense Quote">“72% of organizations prioritize security over operational efficiency (52%) and tamper prevention (47%) as key factors in the development of the IAM program.”</span></span></span></p>
<p>~According to <a href="https://www.cybersecurity-insiders.com/portfolio/2020-identity-and-access-management-report-download/">2020 IAM Report, Cybersecurity Insiders</a></p></blockquote>
<p>&nbsp;</p>
<p><span data-contrast="auto">Digital identity management is a process that can be implemented in stages. It’s not necessary to integrate all systems at once. Company may decide to implement single systems and add more structures over time.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><a href="https://inero-software.com/contact-us/"><strong><span style="color: #800080;">Inero Software</span></strong></a> provides knowledge and expertise on how to successfully use cutting edge technologies and data to shape corporate digital products of the future. In recent months we have implemented several cybersecurity solutions based on IAM that allow users to use single sign-on authorization point and securely access corporate systems.</p>
<p><span data-contrast="auto">In the <a href="https://inero-software.com/category/blog/company/"><strong><span style="color: #800080;">blog post</span></strong></a> section you will find other articles about IT systems and more!</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p>&nbsp;</p>
<p></p></div><br />
</p></div>
<p>Artykuł <a href="https://inero-software.com/digital-identity-in-the-era-of-remote-work-and-pandemic/">Digital identity in the era of remote work and pandemic</a> pochodzi z serwisu <a href="https://inero-software.com">Inero Software - Software Consulting</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3917</post-id>	</item>
		<item>
		<title>Managing data with machine learning</title>
		<link>https://inero-software.com/business-process-optimization-with-machine-learning/</link>
		
		<dc:creator><![CDATA[Andrzej Chybicki]]></dc:creator>
		<pubDate>Wed, 02 Mar 2022 08:59:51 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Company]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[Machine Learning]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[process optimization]]></category>
		<guid isPermaLink="false">https://inero-software.com/?p=3934</guid>

					<description><![CDATA[<p>With the revolution of Industry 4.0, production became automated. We have more automatic devices and measurements, so we can handle more data. They are becoming the driving force of industrial production and cover all its aspects. Data can be about products, equipment, research, supply chain, finance and users.</p>
<p>Artykuł <a href="https://inero-software.com/business-process-optimization-with-machine-learning/">Managing data with machine learning</a> pochodzi z serwisu <a href="https://inero-software.com">Inero Software - Software Consulting</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>&nbsp;</p>
<div class="row">
<p><div class="col-sm-1"></div></p>
<p><div class="col-sm-10">
<p><img loading="lazy" decoding="async" data-attachment-id="2770" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-10-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Software" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" tabindex="0" role="button" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="75" height="75" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 75px) 100vw, 75px" /></p>
<p>&nbsp;</p>
<h2><span style="color: #800080;"><span class="TextRun SCXW144094806 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="none"><span class="NormalTextRun SCXW144094806 BCX0" data-ccp-parastyle="heading 1">Huge amounts of data in business life</span></span><span class="EOP SCXW144094806 BCX0" data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:0,&quot;335559740&quot;:259}"> </span></span></h2>
<p>&nbsp;</p>
<p><span data-contrast="auto"><span class="TextRun SCXW189727610 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW189727610 BCX0"><span class="TextRun SCXW21457896 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW21457896 BCX0"><img loading="lazy" decoding="async" data-attachment-id="2768" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-08/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Glyph v8" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" tabindex="0" role="button" class=" wp-image-2768 alignleft" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" alt="" width="46" height="46" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-50x50.png 50w" sizes="(max-width: 46px) 100vw, 46px" /></span></span></span></span>With the revolution of Industry 4.0, production became automated and more effective. We have more automatic devices, precise measurements, storage capacity and computing power that makes the information easier to handle. The huge amounts of data is becoming the driving force of industrial production and cover all its aspects. Data can be about products, equipment, research, <a href="https://inero-software.com/supply-chain-management/">supply chain</a>, finance, users or even their behaviour.<br />
</span></p>
<p><span data-contrast="auto">Nowadays, data is collected by automated devices to manage production effectively and processes. Thanks to the appropriate data flow, the modules included in the production process will be more and more refined. In this way, each part of the production process becomes more detailed, allowing the company to locally adjust production, reflecting and anticipating the needs of customers.</span><b><span data-contrast="auto"> Therefore, an appropriate product cycle is created: production -&gt; sales -&gt; feedback.</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><span data-doc-id="1194296000000031001" data-doc-type="writer">The amount and complexity of the data make their interpretation and adoption beyond human means. With a complex production process, it is challenging to tell which machine </span>is responsible for the degradation in quality or performance. The same applies to the quality of the goods if the speed of their production is enormous. Using integrated data processing, we can divide the modules into various tools, such as data transmission systems, data acquisition systems or data feedback systems and therefore virtually model their behaviour and optimize it&#8217;s performance.</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" data-attachment-id="2770" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-10-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Software" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" tabindex="0" role="button" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="75" height="75" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 75px) 100vw, 75px" /></p>
<p>&nbsp;</p>
<h2><span style="color: #800080;"><span class="TextRun SCXW38029424 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="none"><span class="NormalTextRun SCXW38029424 BCX0" data-ccp-parastyle="heading 2">Business process optimization</span></span><span class="EOP SCXW38029424 BCX0" data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}"> </span></span></h2>
<p>&nbsp;</p>
<p><span class="TextRun SCXW153317933 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW153317933 BCX0"><span data-contrast="auto"><span class="TextRun SCXW189727610 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW189727610 BCX0"><span class="TextRun SCXW21457896 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW21457896 BCX0"><img loading="lazy" decoding="async" data-attachment-id="2768" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-08/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Glyph v8" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" tabindex="0" role="button" class=" wp-image-2768 alignleft" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" alt="" width="94" height="94" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-50x50.png 50w" sizes="(max-width: 94px) 100vw, 94px" /></span></span></span></span></span><span data-doc-id="1194296000000031001" data-doc-type="writer">However, data alone is not enough. It is important to extract valuable information and knowledge from the data.</span> That&#8217;s what <a href="https://inero-software.com/machine-learning-professionals/">Machine Learning</a> does. It allows you to assess trends, relationships between data, relationships between measured data and other data from various processes or predict events based on what has happened. Manufacturing plats today are becoming more and more complex with interrelated processes. In such situations, a person quickly reaches the limit of his ability to take into account every aspect of the process. Machine Learning offers an effective solution that overcomes the challenges mentioned above.<br />
</span></span></p>
<blockquote><p><em><span class="TextRun SCXW136202649 BCX0" lang="EN-US" style="color: #800080;" xml:lang="EN-US" data-contrast="none"><span class="NormalTextRun SCXW136202649 BCX0" data-ccp-parastyle="Intense Quote">&#8220;As companies attempt to increase productivity within research, chip design, and manufacturing while simultaneously accelerating time to market, AI/ML is becoming an increasingly important tool along the whole value chain.&#8221;</span></span></em></p>
<p>~According to <a href="https://www.mckinsey.com/industries/semiconductors/our-insights/scaling-ai-in-the-sector-that-enables-it-lessons-for-semiconductor-device-makers">McKinsey</a></p></blockquote>
<p><span class="TextRun SCXW222571306 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW222571306 BCX0">If we want to extract information from data, we need to perform the data extraction process, remove unnecessary dependencies, clean gross errors, understand the existing dependencies, develop and adjust the ML model that will map the data and finally adapt it to work in production mode.</span></span><span class="EOP SCXW222571306 BCX0" data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" data-attachment-id="2770" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-10-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Software" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" tabindex="0" role="button" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="75" height="75" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 75px) 100vw, 75px" /></p>
<p>&nbsp;</p>
<h2><span style="color: #800080;"><span class="TextRun SCXW79629315 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="none"><span class="NormalTextRun SCXW79629315 BCX0" data-ccp-parastyle="heading 2">Machine Learning areas of applications</span></span><span class="EOP SCXW79629315 BCX0" data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}"> </span></span></h2>
<p>&nbsp;</p>
<p><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">The main purpose of <a href="https://inero-software.com/machine-learning-professionals/">Artificial Intelligence</a> algorithms is to solve specific problems and improve processes. Machine Learning allows you to optimize areas such as:  </span></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Process automation</span><span data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">Work safety</span><span data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">Quality control</span><span data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1">Decision making</li>
</ul>
<p><span data-doc-id="1194296000000031001" data-doc-type="writer">It is worth mentioning that algorithms allow you to solve problems from various business spheres. Therefore, it is necessary to determine in business what Machine Learning approaches can be applied in our company. </span><strong>We should set ourselves up for the fact that implementing ML is a process, not a task.</strong> The implementation of machine learning algorithms requires constantly generated data to be able to control business processes properly. Therefore, all aspects of such processes must be digitized as much as possible. Therefore, it requires experts to design processes taking into account the current state of the data, thanks to which it will be possible to collect correct data consciously and optimize the appropriate metrics.</p>
<blockquote><p><em><span class="TextRun SCXW52941253 BCX0" lang="EN-US" style="color: #800080;" xml:lang="EN-US" data-contrast="none"><span class="NormalTextRun SCXW52941253 BCX0" data-ccp-parastyle="Intense Quote">&#8220;McKinsey predicts that Machine Learning will help manufacturing companies reduce material delivery times by 30% and achieve fuel savings of 12% by optimizing their processes. The company also estimates that enterprises can increase gross revenues by 13% if they fully integrate AI technologies into their operations.&#8221;</span></span></em></p></blockquote>
<p><span data-contrast="auto">Machine learning algorithms can run in real time, so that they will provide specific recommendations or they identify potential for improvement in production. Machine Learning can therefore serve as a support tool for process control operators, helping them make more informed decisions to maximize production in their enterprise.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><span data-contrast="auto">When implementing solutions in the area of machine learning, we must build and appropriate strategy in line with the goals of our company. By defining clear goals and understanding the required infrastructure, we can count on a greater probability of success of the implemented solutions. In addition, it must be remembered that the data must be properly formatted and organized in terms of the algorithm. If we want to take full advantage of machine learning in our organization, we need an appropriate team. By employing passionate people, the probability of success will increase dramatically. The Inero Software team offers AI / ML implementation to enterprises in a few steps:</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<ol>
<li data-leveltext="%1." data-font="" data-listid="2" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Identification of problems and business goals</span><span data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> &#8211; this is crucial when trying to understand a given infrastructure.</span></li>
<li data-leveltext="%1." data-font="" data-listid="2" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Establishing data sources and their quality</span><span data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> &#8211; the better quality of the data we have, the more effective machine learning algorithm will be.</span></li>
<li data-leveltext="%1." data-font="" data-listid="2" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Data collection and adaption</span><span data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> &#8211; adjusting the data and organizing it will also positively affect the operation of the algorithm.</span></li>
<li data-leveltext="%1." data-font="" data-listid="2" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Creating a model based on points 1-3.</span></li>
<li data-leveltext="%1." data-font="" data-listid="2" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Launching and verification in the context of the assumed goals.</span></li>
<li data-leveltext="%1." data-font="" data-listid="2" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Establishing bottlenecks where we have data gaps &#8211; so we check what data is badly collected and draw conclusions from it.</span></li>
</ol>
<p>In this way, we get an effective model that efficiently analyzes the data and provides us with accurate results. Of course, building such a model is a continuous process, so it is worth repeating the above steps from time to time to further improve our algorithm.</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" data-attachment-id="2770" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-10-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Software" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" tabindex="0" role="button" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="75" height="75" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 75px) 100vw, 75px" /></p>
<p>&nbsp;</p>
<h2><span style="color: #800080;"><span class="TextRun SCXW224215956 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="none"><span class="NormalTextRun SCXW224215956 BCX0" data-ccp-parastyle="heading 2">Effective enterprise management</span></span><span class="EOP SCXW224215956 BCX0" data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}"> with business process optimization</span></span></h2>
<p>&nbsp;</p>
<p><b><span data-contrast="auto"><span class="TextRun SCXW153317933 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW153317933 BCX0"><span class="TextRun SCXW189727610 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW189727610 BCX0"><span class="TextRun SCXW21457896 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW21457896 BCX0"><img loading="lazy" decoding="async" data-attachment-id="2768" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-08/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Glyph v8" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" tabindex="0" role="button" class=" wp-image-2768 alignleft" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" alt="" width="111" height="111" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-50x50.png 50w" sizes="(max-width: 111px) 100vw, 111px" /></span></span></span></span></span></span>It is important to understand that Machine Learning is not the best solution to all problems</span></b><span data-contrast="auto">. ML is a tool that allows you to effectively use data to manage and optimize processes. Many industries currently focus on digitization and analytics. In some businesses, huge amounts of data accumulate every day and actually, machine learning algorithms can collect and analyse an unlimited amount of data. On the other hand, the optimization performed by experts is largely based on their experience and knowledge about the process itself. Machine Learning is about learning from previous these previous experiences. So by analysing such amounts of data, algorithms can learn to understand the complex relationships between different business subcomponents and their impact on final result. How AI learns from experience is in a way similar to <a href="https://inero-software.com/industry-expertise/">experts</a> who learn to steer a given process. However, AI allows you to analyse complete data sets over several years. </span></p>
<p><span data-contrast="auto">The cooperation of Machine Learning experts and business experts is important in this matter so that ML reflects the business processes. On the one hand, what counts here is a good specification of the ergo business needs and the optimization of ML for what we want to achieve. On the other hand, it is important that business experts understand the limitations and disadvantages of Machine Learning. Bad data will cause the applications to end up damaging the process.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><a href="https://inero-software.com/contact-us/"><strong><span style="color: #800080;">Inero Software</span></strong></a> provides knowledge and expertise on how to successfully use cutting edge technologies and data to shape corporate digital products of the future.</p>
<p><span data-contrast="auto">In the <a href="https://inero-software.com/category/blog/company/"><strong><span style="color: #800080;">blog post</span></strong></a> section, you can find other articles on modern enterprise solutions.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p>&nbsp;</p>
<p></p></div><br />
</p></div>
<p>Artykuł <a href="https://inero-software.com/business-process-optimization-with-machine-learning/">Managing data with machine learning</a> pochodzi z serwisu <a href="https://inero-software.com">Inero Software - Software Consulting</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3934</post-id>	</item>
		<item>
		<title>Digitalization of social care services &#8211; case study</title>
		<link>https://inero-software.com/digitalization-of-social-care-services-case-study/</link>
		
		<dc:creator><![CDATA[Andrzej Chybicki]]></dc:creator>
		<pubDate>Thu, 20 Jan 2022 12:56:13 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Company]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[digitalization]]></category>
		<category><![CDATA[social care services]]></category>
		<category><![CDATA[supply chain management]]></category>
		<guid isPermaLink="false">https://inero-software.com/?p=3889</guid>

					<description><![CDATA[<p>In recent years, there has been a significant development of services and products from the MedTech industry. It has its application in care services for the elderly or disabled. The digitization of services allows for a better use of resources (funds, care, medicines) and people (shortening the travel time, fewer documents).</p>
<p>Artykuł <a href="https://inero-software.com/digitalization-of-social-care-services-case-study/">Digitalization of social care services &#8211; case study</a> pochodzi z serwisu <a href="https://inero-software.com">Inero Software - Software Consulting</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="row">
<p><div class="col-sm-1"></div></p>
<p><div class="col-sm-10">
<p><img loading="lazy" decoding="async" data-attachment-id="2770" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-10-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Software" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" tabindex="0" role="button" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="75" height="75" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 75px) 100vw, 75px" /></p>
<p>&nbsp;</p>
<p><span data-contrast="auto">In recent years, there has been a significant development of services and products from the MedTech industry. The digitization of services allows for a better use of resources (funds, care, medicines) and people (shortening the travel time, fewer documents). Thanks to this we can focus on the effective way to improve caring for the elderly. Digital transformation gives a start to many tools and resources which improve providing such services.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><span data-doc-id="1194296000000031001" data-doc-type="writer">In this blog post, we present our experience of working on the application, which we developed in cooperation with the Social Services Center in Warsaw and implemented in July 2021. This is a system that enables management, planning and verification of hot meals delivery by the administrative unit for people in need.</span></p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" data-attachment-id="2770" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-10-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Software" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" tabindex="0" role="button" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="75" height="75" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 75px) 100vw, 75px" /></p>
<h2><span class="TextRun SCXW210561287 BCX0" lang="EN-US" style="color: #800080;" xml:lang="EN-US" data-contrast="none"><span class="NormalTextRun SCXW210561287 BCX0" data-ccp-parastyle="heading 2">Reporting and </span><span class="NormalTextRun SCXW210561287 BCX0" data-ccp-parastyle="heading 2">deliveries analysis &#8211; problem description</span></span></h2>
<p>&nbsp;</p>
<p><span data-contrast="auto"><span class="TextRun SCXW21457896 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW21457896 BCX0"><img loading="lazy" decoding="async" data-attachment-id="2768" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-08/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Glyph v8" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" tabindex="0" role="button" class=" wp-image-2768 alignleft" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" alt="" width="94" height="94" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-50x50.png 50w" sizes="(max-width: 94px) 100vw, 94px" /></span></span></span></p>
<p class="zw-paragraph heading0" data-header="0" data-textformat="{&quot;size&quot;:&quot;12.00&quot;,&quot;fgc&quot;:&quot;rgb(0, 0, 0)&quot;,&quot;type&quot;:&quot;text&quot;}" data-margin-bottom="12pt" data-margin-top="12pt" data-hd-info="0" data-line-height="1.2" data-doc-id="1194296000000031001" data-doc-type="writer">Systematic hot meals delivery for elderly or impaired people can constitute a significant logistical and organizational problems for social case services. Usually hot meals are delivered in lunch time, for instance between 11am to 3pm and the food is delivered to the specific premises where a given person lives. Meals are often not received due to a person&#8217;s departure or health problems. The social services center usually employs catering companies to prepare and deliver meals. They must have confirmation that the food has been delivered to the resident on schedule. Without a proper system, controlling meal deliveries can be problematic.</p>
<p class="zw-paragraph heading0" data-header="0" data-textformat="{&quot;size&quot;:&quot;12.00&quot;,&quot;fgc&quot;:&quot;rgb(0, 0, 0)&quot;,&quot;type&quot;:&quot;text&quot;}" data-margin-bottom="12pt" data-margin-top="12pt" data-hd-info="0" data-line-height="1.2">In care services it is important to create constantly updated lists of people to whom hot meals are delivered. More over, the it must be taken into account that certain decisions determine whether a particular person is entitled to a meal on a given day. For some people, meals are delivered daily, for others on weekdays, and for others only on weekends. This makes the daily preparation of an updated deliver  list time-consuming, and the activity itself is repetitive and error-prone.</p>
<p><span data-contrast="auto">Overlapping organizational and billing problems in care services that supports a large number of residents everyday, makes the process not completely successful. Digitalization improves organizational and logistics processes. Thanks to this, people who need help actually receive it.<br />
</span></p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" data-attachment-id="2770" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-10-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Software" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" tabindex="0" role="button" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="75" height="75" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 75px) 100vw, 75px" /></p>
<h2><span style="color: #800080;"><span class="TextRun SCXW74481912 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="none"><span class="NormalTextRun SCXW74481912 BCX0" data-ccp-parastyle="heading 2">Benefits of digitalization in social care services</span></span></span></h2>
<p>&nbsp;</p>
<p><span data-contrast="auto"><img loading="lazy" decoding="async" data-attachment-id="1574" data-permalink="https://inero-software.com/?attachment_id=1574" data-orig-file="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="inero-software-glify-02" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" data-large-file="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" tabindex="0" role="button" class=" wp-image-1574 alignleft" src="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" alt="" width="43" height="43" srcset="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png 208w, https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02-80x80.png 80w" sizes="(max-width: 43px) 100vw, 43px" /></span><span style="text-indent: 0em;" data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><span data-doc-id="1194296000000031001" data-doc-type="writer">Digital transformation improves the whole process associated with the cooperation of entities. On the one hand, we have a town hall that orders the execution of meals, and on the other hand, catering companies</span> and suppliers who prepare and deliver meals. At the end of this process, we have people who need help. </span></p>
<p><span data-contrast="auto"><img loading="lazy" decoding="async" data-attachment-id="1574" data-permalink="https://inero-software.com/?attachment_id=1574" data-orig-file="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="inero-software-glify-02" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" data-large-file="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" tabindex="0" role="button" class=" wp-image-1574 alignleft" src="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" alt="" width="43" height="43" srcset="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png 208w, https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02-80x80.png 80w" sizes="(max-width: 43px) 100vw, 43px" /></span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">Our application automatically generates meal delivery lists for each day based on the entered and existing administrative decisions. Thanks to this, we can be sure that every person that needs help will receive their meal.  </span></p>
<p><span data-contrast="auto"><img loading="lazy" decoding="async" data-attachment-id="1574" data-permalink="https://inero-software.com/?attachment_id=1574" data-orig-file="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="inero-software-glify-02" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" data-large-file="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" tabindex="0" role="button" class=" wp-image-1574 alignleft" src="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" alt="" width="43" height="43" srcset="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png 208w, https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02-80x80.png 80w" sizes="(max-width: 43px) 100vw, 43px" />Digitalization allows for ongoing verification that hot meals are properly delivered. For this we can use QR codes. Stickers with such codes are placed next to each apartment. Suppliers can scan them and confirm that on schedule, they arrived at the location and delivered the meal.<br />
</span></p>
<p><span data-contrast="auto"><img loading="lazy" decoding="async" data-attachment-id="1574" data-permalink="https://inero-software.com/?attachment_id=1574" data-orig-file="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="inero-software-glify-02" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" data-large-file="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" tabindex="0" role="button" class=" wp-image-1574 alignleft" src="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" alt="" width="43" height="43" srcset="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png 208w, https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02-80x80.png 80w" sizes="(max-width: 43px) 100vw, 43px" /></span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">Using mobile app you can inform town hall that a specific person has not turned up at his/her place of residence. Proper system allows you to automatic generation of reports and settlements for catering companies. Information about delivery times or delivered meals are contain in the server part of the system, to which town hall employees have access. Thanks to this, they can better control spending money from public funds. </span></p>
<p><span data-contrast="auto"><img loading="lazy" decoding="async" data-attachment-id="1574" data-permalink="https://inero-software.com/?attachment_id=1574" data-orig-file="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="inero-software-glify-02" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" data-large-file="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" tabindex="0" role="button" class=" wp-image-1574 alignleft" src="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" alt="" width="43" height="43" srcset="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png 208w, https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02-80x80.png 80w" sizes="(max-width: 43px) 100vw, 43px" />IT technologies ensure that people in need of help receive their hot meal on time without any delay. Using mobile apps employees of catering companies and town hall have access to up-to-date data. CUS Warsaw uses such solutions to deliver meals for elderly.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><img loading="lazy" decoding="async" data-attachment-id="3896" data-permalink="https://inero-software.com/digitalization-of-social-care-services-case-study/schemaciken/" data-orig-file="https://inero-software.com/wp-content/uploads/2022/01/schemacikEN.png" data-orig-size="1920,1080" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="schemacikEN" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2022/01/schemacikEN-300x169.png" data-large-file="https://inero-software.com/wp-content/uploads/2022/01/schemacikEN-1030x579.png" tabindex="0" role="button" class="aligncenter wp-image-3896" src="https://inero-software.com/wp-content/uploads/2022/01/schemacikEN-300x169.png" alt="digitization of social care services" width="940" height="530" srcset="https://inero-software.com/wp-content/uploads/2022/01/schemacikEN-300x169.png 300w, https://inero-software.com/wp-content/uploads/2022/01/schemacikEN-768x432.png 768w, https://inero-software.com/wp-content/uploads/2022/01/schemacikEN-1536x864.png 1536w, https://inero-software.com/wp-content/uploads/2022/01/schemacikEN-533x300.png 533w, https://inero-software.com/wp-content/uploads/2022/01/schemacikEN.png 1920w" sizes="(max-width: 940px) 100vw, 940px" /></p>
<p><img loading="lazy" decoding="async" data-attachment-id="2770" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-10-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Software" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" tabindex="0" role="button" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="75" height="75" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 75px) 100vw, 75px" /></p>
<p>&nbsp;</p>
<h2><span style="color: #800080;"><span class="TextRun SCXW169524204 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="none"><span class="NormalTextRun SCXW169524204 BCX0" data-ccp-parastyle="heading 2">Digitalization of social meal delivery for elderly and impaired people</span></span><span class="EOP SCXW169524204 BCX0" data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}"> </span></span></h2>
<p>&nbsp;</p>
<p><span class="TextRun SCXW223079295 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW223079295 BCX0"><span data-contrast="auto"><span class="TextRun SCXW21457896 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW21457896 BCX0"><img loading="lazy" decoding="async" data-attachment-id="2768" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-08/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Glyph v8" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" tabindex="0" role="button" class=" wp-image-2768 alignleft" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" alt="" width="72" height="72" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-50x50.png 50w" sizes="(max-width: 72px) 100vw, 72px" /></span></span></span><span data-doc-id="1194296000000031001" data-doc-type="writer">We created a system which consists of a mobile application and a server part. It allows to management, planning and verification meals delivery to people who need help. This project supports social policy through which people who need care can receive it. In every large city there is a center dedicated to this, which deals with care services. For example, in Warsaw it’s Social Service Center “Social Warsaw”, and in Gdansk its Municipal Family Support Center.</span><br />
</span></span></p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" data-attachment-id="2770" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-10-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Software" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" tabindex="0" role="button" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="75" height="75" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 75px) 100vw, 75px" /></p>
<p>&nbsp;</p>
<h2><span style="color: #800080;"><span class="TextRun SCXW265559390 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="none"><span class="NormalTextRun SCXW265559390 BCX0" data-ccp-parastyle="heading 2">The main assumptions of a </span><span class="NormalTextRun SCXW265559390 BCX0" data-ccp-parastyle="heading 2">project</span></span><span class="EOP SCXW265559390 BCX0" data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}"> </span></span></h2>
<p>&nbsp;</p>
<p><span data-contrast="auto"><span class="TextRun SCXW21457896 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW21457896 BCX0"><img loading="lazy" decoding="async" data-attachment-id="2768" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-08/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Glyph v8" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" tabindex="0" role="button" class=" wp-image-2768 alignleft" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" alt="" width="72" height="72" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-50x50.png 50w" sizes="(max-width: 72px) 100vw, 72px" /></span></span></span></p>
<p class="zw-paragraph heading0" data-header="0" data-textformat="{&quot;size&quot;:&quot;12.00&quot;,&quot;fgc&quot;:&quot;rgb(0, 0, 0)&quot;,&quot;type&quot;:&quot;text&quot;}" data-margin-bottom="12pt" data-margin-top="12pt" data-hd-info="0" data-line-height="1.2" data-doc-id="1194296000000031001" data-doc-type="writer">The main task in this project is the automation of <a href="https://inero-software.com/supply-chain-management/">supply chain management</a> using digital technologies and reporting. System enables creating of updated delivery plans for each day. It automatically generates daily and monthly reports. The system can handle up to 2 thousand orders a day. Technologies that are used in this project enable automatic management of people covered by delivery, catering companies and drivers in the system. It processes personal data, but it’s compliant with ISO 27001 standards.</p>
<p><span data-contrast="auto">Thanks to this, all data is safe. Only the required data is processed, so it is not distributed to the outside world. So, this project meets all GDPR requirements. Our system ensure insight into the current implementation of delivery processes and informing about the unavailability of a resident. It provides up-to-date information on meal distribution, i.e. the type of diet, transporting times and residents comments.<br />
</span></p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" data-attachment-id="2770" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-10-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Software" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" tabindex="0" role="button" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="75" height="75" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 75px) 100vw, 75px" /></p>
<p>&nbsp;</p>
<h2><span style="color: #800080;"><span class="TextRun SCXW28903674 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="none"><span class="NormalTextRun SCXW28903674 BCX0" data-ccp-parastyle="heading 2">Advantages of implementing the system</span></span><span class="EOP SCXW28903674 BCX0" data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}"> </span></span></h2>
<p>&nbsp;</p>
<p><span class="TextRun SCXW228218877 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW228218877 BCX0"><span class="TextRun SCXW223079295 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW223079295 BCX0"><span data-contrast="auto"><span class="TextRun SCXW21457896 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW21457896 BCX0"><img loading="lazy" decoding="async" data-attachment-id="2768" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-08/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Glyph v8" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" tabindex="0" role="button" class=" wp-image-2768 alignleft" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" alt="" width="113" height="113" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-50x50.png 50w" sizes="(max-width: 113px) 100vw, 113px" /></span></span></span></span></span><span data-doc-id="1194296000000031001" data-doc-type="writer">Implementation of this <a href="https://inero-software.com/projects/">project</a> makes the entire delivery process transparent. It can shorten the time of administrative and logistic services using technological tools. If the process is more transparent, </span>the users of local government administration have better insight into how public money is used for social assistance. Thanks to this system, obtaining reports and summaries is much more convenient and less time-consuming. The entire process of spending public funds is transparent to all parties.It integrates systems that already exist in CUS Warsaw. Therefore, importing various types of data from existing IT systems is much easier.<br />
</span></span></p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" data-attachment-id="2770" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-10-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Software" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" tabindex="0" role="button" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="75" height="75" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 75px) 100vw, 75px" /></p>
<p>&nbsp;</p>
<h2><span style="color: #800080;"><span class="TextRun SCXW255871103 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="none"><span class="NormalTextRun SCXW255871103 BCX0" data-ccp-parastyle="heading 2">Improving </span><span class="NormalTextRun SCXW255871103 BCX0" data-ccp-parastyle="heading 2">social </span><span class="NormalTextRun SCXW255871103 BCX0" data-ccp-parastyle="heading 2">care services</span></span><span class="EOP SCXW255871103 BCX0" data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}"> </span></span></h2>
<p>&nbsp;</p>
<p><span data-contrast="auto"><span class="TextRun SCXW228218877 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW228218877 BCX0"><span class="TextRun SCXW223079295 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW223079295 BCX0"><span class="TextRun SCXW21457896 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW21457896 BCX0"><img loading="lazy" decoding="async" data-attachment-id="2768" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-08/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Glyph v8" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" tabindex="0" role="button" class=" wp-image-2768 alignleft" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" alt="" width="71" height="71" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-50x50.png 50w" sizes="(max-width: 71px) 100vw, 71px" /></span></span></span></span></span></span></span></p>
<p class="zw-paragraph heading0" data-header="0" data-textformat="{&quot;size&quot;:&quot;12.00&quot;,&quot;fgc&quot;:&quot;rgb(0, 0, 0)&quot;,&quot;type&quot;:&quot;text&quot;}" data-margin-bottom="12pt" data-margin-top="12pt" data-hd-info="0" data-line-height="1.2" data-doc-id="1194296000000031001" data-doc-type="writer">The use of IT technology in the care services makes the entire process their provision much more transparent and, above all, optimized in organizational, formal and financial terms. Thanks to this, both town hall employees and catering companies are gaining on time. This is a significant factor when delivering hot meals to people who need help. Our system is a cloud-based system, but it can also be implemented as an on-demand system. So, it can be used in the infrastructure of the office or in dedicated servers.</p>
<p><span data-contrast="auto">The implementation of such a system is not a complicated process. You have to take care of:<br />
</span></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Integration with the already existing systems or with other systems for decision about delivering meals,</span><span data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">Delivering QR codes to residents,</span><span data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">Installation of the application by drivers.</span><span data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
</ul>
<p><span data-contrast="auto">As a company, we <a href="https://inero-software.com/offer/">offer</a> effective solutions that facilitate the effective management of logistic and organizational processes. We help in monitoring and reporting activities in the supply chain.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><a href="https://inero-software.com/contact-us/"><strong><span style="color: #800080;">Inero Software</span></strong></a> provides knowledge and expertise on how to successfully use cutting edge technologies and data to shape corporate digital products of the future.</p>
<p><span data-contrast="auto">In the <a href="https://inero-software.com/category/blog/company/"><strong><span style="color: #800080;">blog post</span></strong></a> section, you can find other articles about our projects and more!</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p>&nbsp;</p>
<p></p></div><br />
</p></div>
<p>Artykuł <a href="https://inero-software.com/digitalization-of-social-care-services-case-study/">Digitalization of social care services &#8211; case study</a> pochodzi z serwisu <a href="https://inero-software.com">Inero Software - Software Consulting</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3889</post-id>	</item>
		<item>
		<title>Android Kiosk Mode &#8211; how to turn an Android device into a single-use device</title>
		<link>https://inero-software.com/android-kiosk-mode-how-to-turn-an-android-device-into-a-single-use-device/</link>
		
		<dc:creator><![CDATA[Andrzej Chybicki]]></dc:creator>
		<pubDate>Thu, 18 Mar 2021 11:36:35 +0000</pubDate>
				<category><![CDATA[Company]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[corporate]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[single use device]]></category>
		<guid isPermaLink="false">https://sandbox-www.devel.inero.com.pl/?p=3353</guid>

					<description><![CDATA[<p>In Inero Software – software development agency, we are experts of digital transformation and smart automation. We provide knowledge and expertise on how to successfully use cutting edge technologies and data to shape corporate digital products of the future. Find out more visiting our website or contacting us directly on&#8230;</p>
<p>Artykuł <a href="https://inero-software.com/android-kiosk-mode-how-to-turn-an-android-device-into-a-single-use-device/">Android Kiosk Mode &#8211; how to turn an Android device into a single-use device</a> pochodzi z serwisu <a href="https://inero-software.com">Inero Software - Software Consulting</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<div class="row"><div class="col-sm-1"></div><div class="col-sm-10">
<p><img loading="lazy" decoding="async" data-attachment-id="2770" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-10-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Software" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" tabindex="0" role="button" class="aligncenter wp-image-2770 size-thumbnail" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png" alt="Separating icon" width="80" height="80" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w" sizes="(max-width: 80px) 100vw, 80px" /></p>
<p><span style="font-weight: 400;"><img loading="lazy" decoding="async" data-attachment-id="2873" data-permalink="https://inero-software.com/digital-twins-a-dynamic-software-model-of-reality/inero-glify-08-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="inero-glyph" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png" tabindex="0" role="button" class="alignleft wp-image-2873 size-thumbnail" src="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08-80x80.png" alt="Paragraph icon" width="80" height="80" srcset="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08-50x50.png 50w, https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png 208w" sizes="(max-width: 80px) 100vw, 80px" /></span></p>
<p><span style="font-weight: 400;">I believe that the Android OS needs no introduction. It is currently the most popular smartphone operating system. However, the days when Android was only used in consumer electronics are behind us. Today we can meet Android devices at every step. It is increasingly used in industries such as security, automation, logistics, sales, hospitality, etc. </span><span style="font-weight: 400;">Due to its ease of use, flexibility, level of customization and lower cost, Android devices are the choice of many enterprises and organizations. However, for many companies Android systems are not considered safe enough for use in the workplace or like all mobile devices are too distracting. </span><span style="font-weight: 400;">One of the best solutions to the above problems is the Kiosk Mode tool, which allows us to convert your Android device into a dedicated app, while providing additional security and reducing additional distractions. Enjoy your reading!</span></p>
<p><img loading="lazy" decoding="async" data-attachment-id="2770" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-10-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Software" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" tabindex="0" role="button" class="aligncenter wp-image-2770 size-thumbnail" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png" alt="Separating icon" width="80" height="80" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w" sizes="(max-width: 80px) 100vw, 80px" /></p>
<h2><span style="color: #800080;"><b>COSU &#8211; corporate-owned single use device</b></span></h2>
<p><span style="font-weight: 400;"><img loading="lazy" decoding="async" data-attachment-id="2873" data-permalink="https://inero-software.com/digital-twins-a-dynamic-software-model-of-reality/inero-glify-08-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="inero-glyph" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png" tabindex="0" role="button" class="alignleft wp-image-2873 size-thumbnail" src="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08-80x80.png" alt="Paragraph icon" width="80" height="80" srcset="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08-50x50.png 50w, https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png 208w" sizes="(max-width: 80px) 100vw, 80px" />Dedicated devices (formerly called corporate-owned single-use, or COSU) are fully managed devices that serve a specific purpose. Thanks to this, it is possible to maximize the use of the device, while limiting use of personal and non-supervised functions like telephony, messaging etc. We deal with many such devices every day. These include vending machines, automatic ticket printers, parking meters or interactive information boards in shopping malls. COSU allows IT administrators to remotely control all these devices and can lock the device for a specific application. This prevents users from using other applications or performing other activities on these devices.</span></p>
<p><img loading="lazy" decoding="async" data-attachment-id="2770" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-10-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Software" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" tabindex="0" role="button" class="aligncenter wp-image-2770 size-thumbnail" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png" alt="Separating icon" width="80" height="80" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w" sizes="(max-width: 80px) 100vw, 80px" /></p>
<h2><span style="color: #800080;"><b>Kiosk Mode</b></span></h2>
<p><span style="font-weight: 400;"><img loading="lazy" decoding="async" data-attachment-id="2873" data-permalink="https://inero-software.com/digital-twins-a-dynamic-software-model-of-reality/inero-glify-08-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="inero-glyph" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png" tabindex="0" role="button" class="alignleft wp-image-2873 size-thumbnail" src="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08-80x80.png" alt="Paragraph icon" width="80" height="80" srcset="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08-50x50.png 50w, https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png 208w" sizes="(max-width: 80px) 100vw, 80px" /></span></p>
<p><span style="font-weight: 400;">Kiosk mode allows to turn Android devices into single-use devices by running only one application or a specific set of applications. Starting with Android 5.0 Lollipop, the system offers two ways to lock the device for a specific purpose:</span></p>
<p>&nbsp;</p>
<ul>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">App pinning &#8211; Using the app pinning feature, users can temporarily pin any installed app on the screen. The navigation buttons (Home and Recent apps) are visible but inactive. The user can exit this mode by holding down the Home and Recent apps buttons simultaneously.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Lock task mode &#8211; This is an even more effective way to switch your Android device into a single-purpose kiosk. Only applications whitelisted by the Device Policy Controller (DPC) may be blocked. The navigation buttons (Home and Recent apps) are hidden. Exiting this mode is done by calling the stopLockTask() method. This mode is available to only device owner devices.</span></li>
</ul>
<p><span style="font-weight: 400;">Running the application in Kiosk Mode gives us a number of benefits:</span></p>
<ul>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">device acts as a single application platform,</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">hidden navigation buttons (Lock task mode),</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">inactive status bar,</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">automatic app startup with system startup,</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">disabled notifications,</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">blocked incoming calls,</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">inactive transition to settings,</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">working in full screen mode.</span></li>
</ul>
<p><img loading="lazy" decoding="async" data-attachment-id="2770" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-10-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Software" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" tabindex="0" role="button" class="aligncenter wp-image-2770 size-thumbnail" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png" alt="Separating icon" width="80" height="80" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w" sizes="(max-width: 80px) 100vw, 80px" /></p>
<h2><span style="color: #800080;"><b>How to enable Android Kiosk Mode?</b></span></h2>
<p><span style="font-weight: 400;"><img loading="lazy" decoding="async" data-attachment-id="2873" data-permalink="https://inero-software.com/digital-twins-a-dynamic-software-model-of-reality/inero-glify-08-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="inero-glyph" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png" tabindex="0" role="button" class="alignleft wp-image-2873 size-thumbnail" src="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08-80x80.png" alt="Paragraph icon" width="80" height="80" srcset="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08-50x50.png 50w, https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png 208w" sizes="(max-width: 80px) 100vw, 80px" /></span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 400;">The first step is to implement the class inheriting from the DeviceAdminReceiver class:</span></p>
<p>&nbsp;</p>
<pre><span style="font-weight: 400;">class MyDeviceAdminReceiver : DeviceAdminReceiver() {</span>
<span style="font-weight: 400;">    companion object {</span>
<span style="font-weight: 400;">        fun getComponentName(context: Context): ComponentName {</span>
<span style="font-weight: 400;">            return ComponentName(context.applicationContext, MyDeviceAdminReceiver::class.java)</span>
<span style="font-weight: 400;">        }</span>
<span style="font-weight: 400;">    }</span>
<span style="font-weight: 400;">}</span></pre>
<p><span style="font-weight: 400;">DeviceAdminReceiver is a </span><span style="font-weight: 400;">class which provides a convenience for interpreting the raw intent actions that are sent by the system.</span></p>
<p><span style="font-weight: 400;">Then we have to inform the system that our application wants to become the device administrator. We can do this by adding a receiver in the AndroidManifest.xml file:</span></p>
<pre><span style="font-weight: 400;">&lt;application&gt;</span>
<span style="font-weight: 400;">          ...</span>
<span style="font-weight: 400;">      &lt;receiver</span>
<span style="font-weight: 400;">            android:name=".MyDeviceAdminReceiver"</span>
<span style="font-weight: 400;">            android:description="@string/app_desc"</span>
<span style="font-weight: 400;">            android:label="@string/app_name"</span>
<span style="font-weight: 400;">            android:permission="android.permission.BIND_DEVICE_ADMIN"&gt;</span>
<span style="font-weight: 400;">            &lt;meta-data</span>
<span style="font-weight: 400;">                android:name="android.app.device_admin" /&gt;</span>
<span style="font-weight: 400;">            &lt;intent-filter&gt;</span>
<span style="font-weight: 400;">                &lt;action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /&gt;</span>
<span style="font-weight: 400;">            &lt;/intent-filter&gt;</span>
<span style="font-weight: 400;">        &lt;/receiver&gt;</span>
<span style="font-weight: 400;">    &lt;/application&gt;</span></pre>
<p><span style="font-weight: 400;">At this point, we can proceed to the installation of the application. Note that, in order to grant administration rights to the app, you must remove all existing users.  The easiest way is to apply a factory reset your device. It is important not to add a Google account to the device during the first start-up after the reset. List of steps for correct configuration is as follows:</span></p>
<ol>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">factory reset on your mobile device,</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">skip the steps related to adding a Google account,</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">enable the developer mode and USB debugging on the mobile device,</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">install adb (Android Device Bridge) on your computer &#8211; it is automatically installed with the Android Studio environment,</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">install the application on a mobile device using Android Studio or by entering the following commands in the console: </span><span style="font-weight: 400;"> </span>
<ol>
<li style="font-weight: 400;" aria-level="1">
<pre>adb install path / to / kiosk / application.apk</pre>
</li>
</ol>
</li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">grant the application device administrator privileges:</span>
<ol>
<li style="font-weight: 400;" aria-level="2">
<pre><span style="font-weight: 400;">adb shell dpm set-device-owner pl.inero.deliverM8 / .MyDeviceAdminReceiver</span></pre>
</li>
</ol>
</li>
</ol>
<p><span style="font-weight: 400;">Use the following code snippet to verify that the granting process was successful:</span></p>
<pre><span style="font-weight: 400;">override fun onCreate(savedInstanceState: Bundle?) {</span>
<span style="font-weight: 400;">        super.onCreate(savedInstanceState)</span>
<span style="font-weight: 400;">        mDevicePolicyManager = getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager</span>
<span style="font-weight: 400;">        val isAdmin = mDevicePolicyManager.isDeviceOwnerApp(packageName)</span>
<span style="font-weight: 400;">        if (isAdmin) {</span>
<span style="font-weight: 400;">            println("You are an admin")</span>
<span style="font-weight: 400;">        } else {</span>
<span style="font-weight: 400;">            println("You are not an admin")</span>
<span style="font-weight: 400;">        }</span>
<span style="font-weight: 400;">    }</span></pre>
<p><span style="font-weight: 400;">Depending on the needs, we can enable the user to disable the Kiosk mode via the interface (e.g. by confirming with a password) or completely block the exit from the application. With the help of the code snippets below, I will try to explain how you can control the device settings to get the solution that best suits your needs.</span></p>
<p><span style="font-weight: 400;">One of the parameters we can control is whether we keep the device on while the device is plugged in. “0” means  to never stay on while plugged in.</span></p>
<pre><span style="font-weight: 400;">private fun enableStayOnWhilePluggedIn(active: Boolean) = if (active) {</span>
<span style="font-weight: 400;">        mDevicePolicyManager.setGlobalSetting(mAdminComponentName,</span>
<span style="font-weight: 400;">                Settings.Global.STAY_ON_WHILE_PLUGGED_IN,</span>
<span style="font-weight: 400;">                (BatteryManager.BATTERY_PLUGGED_AC</span>
<span style="font-weight: 400;">                        or BatteryManager.BATTERY_PLUGGED_USB</span>
<span style="font-weight: 400;">                        or BatteryManager.BATTERY_PLUGGED_WIRELESS).toString())</span>
<span style="font-weight: 400;">    } else {</span>
<span style="font-weight: 400;">        mDevicePolicyManager.setGlobalSetting(mAdminComponentName, Settings.Global.STAY_ON_WHILE_PLUGGED_IN, "0")</span>
<span style="font-weight: 400;">    }</span></pre>
<p><span style="font-weight: 400;">If we want to impose restrictions on the user, we can use the method </span><span style="font-weight: 400;">addUserRestriction(ComponentName admin, String key). The device user must have device administrator rights or a security exception will be thrown. This method can be called on an instance of DevicePolicyManager.</span></p>
<pre><span style="font-weight: 400;">mDevicePolicyManager = getSystemService (Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager</span></pre>
<p><span style="font-weight: 400;">In our case, we have blocked the user from factory reset, adding new users, connecting external media, controlling the device volume and turning off the bar status:</span></p>
<pre><span style="font-weight: 400;">private fun setRestrictions(disallow: Boolean) {</span>
<span style="font-weight: 400;">        setUserRestriction(UserManager.DISALLOW_FACTORY_RESET, disallow)</span>
<span style="font-weight: 400;">        setUserRestriction(UserManager.DISALLOW_ADD_USER, disallow)</span>
<span style="font-weight: 400;">        setUserRestriction(UserManager.DISALLOW_MOUNT_PHYSICAL_MEDIA, disallow)</span>
<span style="font-weight: 400;">        setUserRestriction(UserManager.DISALLOW_ADJUST_VOLUME, disallow)</span>
<span style="font-weight: 400;">        mDevicePolicyManager.setStatusBarDisabled(mAdminComponentName, disallow)</span>
<span style="font-weight: 400;">    }
</span><span style="font-weight: 400;">private fun setUserRestriction(restriction: String, disallow: Boolean) = if (disallow) {</span>
<span style="font-weight: 400;">        mDevicePolicyManager.addUserRestriction(mAdminComponentName, restriction)</span>
<span style="font-weight: 400;">    } else {</span>
<span style="font-weight: 400;">        mDevicePolicyManager.clearUserRestriction(mAdminComponentName, restriction)</span>
<span style="font-weight: 400;">    }</span></pre>
<p><span style="font-weight: 400;">If we want our application to start with the system startup, then we have to add the appropriate filters:</span></p>
<pre><span style="font-weight: 400;">private fun setAsHomeApp(enable: Boolean) {</span>
<span style="font-weight: 400;">        if (enable) {</span>
<span style="font-weight: 400;">            val intentFilter = IntentFilter(Intent.ACTION_MAIN).apply {</span>
<span style="font-weight: 400;">                addCategory(Intent.CATEGORY_HOME)</span>
<span style="font-weight: 400;">                addCategory(Intent.CATEGORY_DEFAULT)</span>
<span style="font-weight: 400;">            }</span>
<span style="font-weight: 400;">            mDevicePolicyManager.addPersistentPreferredActivity(</span>
<span style="font-weight: 400;">                    mAdminComponentName, intentFilter, ComponentName(packageName, MainActivity::class.java.name))</span>
<span style="font-weight: 400;">        } else {</span>
<span style="font-weight: 400;">            mDevicePolicyManager.clearPackagePersistentPreferredActivities(</span>
<span style="font-weight: 400;">                    mAdminComponentName, packageName)</span>
<span style="font-weight: 400;">        }</span>
<span style="font-weight: 400;">    }</span></pre>
<p><span style="font-weight: 400;">In order to run the application in full screen screen Kiosk Mode , the appropriate flags must be added:</span></p>
<pre><span style="font-weight: 400;">private fun setImmersiveMode(enable: Boolean) {</span>
<span style="font-weight: 400;">        if (enable) {</span>
<span style="font-weight: 400;">            val flags = (View.SYSTEM_UI_FLAG_LAYOUT_STABLE</span>
<span style="font-weight: 400;">                    or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION</span>
<span style="font-weight: 400;">                    or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN</span>
<span style="font-weight: 400;">                    or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION</span>
<span style="font-weight: 400;">                    or View.SYSTEM_UI_FLAG_FULLSCREEN</span>
<span style="font-weight: 400;">                    or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY</span>
<span style="font-weight: 400;">                    )</span>
<span style="font-weight: 400;">            window.decorView.systemUiVisibility = flags</span>
<span style="font-weight: 400;">            window.decorView.setOnSystemUiVisibilityChangeListener {</span>
<span style="font-weight: 400;">                window.decorView.systemUiVisibility = flags;</span>
<span style="font-weight: 400;">            }</span>
<span style="font-weight: 400;">        } else {</span>
<span style="font-weight: 400;">            val flags = (View.SYSTEM_UI_FLAG_LAYOUT_STABLE</span>
<span style="font-weight: 400;">                    or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION</span>
<span style="font-weight: 400;">                    or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN)</span>
<span style="font-weight: 400;">            window.decorView.systemUiVisibility = flags</span>
<span style="font-weight: 400;">        }</span>
<span style="font-weight: 400;">    }</span></pre>
<p><span style="font-weight: 400;">Finally, we use the startLockTask () and stopLockTask () methods to turn Lock task mode on / off:</span></p>
<pre><span style="font-weight: 400;">private fun setLockTask(start: Boolean, isAdmin: Boolean) {</span>
<span style="font-weight: 400;">        if (isAdmin) {</span>
<span style="font-weight: 400;">            mDevicePolicyManager.setLockTaskPackages(</span>
<span style="font-weight: 400;">                    mAdminComponentName, if (start) arrayOf(packageName) else arrayOf())</span>
<span style="font-weight: 400;">        }</span>
<span style="font-weight: 400;">        if (start) {</span>
<span style="font-weight: 400;">            startLockTask()</span>
<span style="font-weight: 400;">        } else {</span>
<span style="font-weight: 400;">            stopLockTask()</span>
<span style="font-weight: 400;">        }</span>
<span style="font-weight: 400;">    }</span></pre>
<p><span style="font-weight: 400;"><img loading="lazy" decoding="async" data-attachment-id="2770" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-10-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Software" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" tabindex="0" role="button" class="aligncenter wp-image-2770 size-thumbnail" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png" alt="Separating icon" width="80" height="80" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w" sizes="(max-width: 80px) 100vw, 80px" /></span></p>
<h2><span style="color: #800080;"><b>Results</b></span></h2>
<p><span style="font-weight: 400;"><img loading="lazy" decoding="async" data-attachment-id="2873" data-permalink="https://inero-software.com/digital-twins-a-dynamic-software-model-of-reality/inero-glify-08-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="inero-glyph" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png" tabindex="0" role="button" class="alignleft wp-image-2873 size-thumbnail" src="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08-80x80.png" alt="Paragraph icon" width="80" height="80" srcset="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08-50x50.png 50w, https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png 208w" sizes="(max-width: 80px) 100vw, 80px" />The above operations allow to change the Android device into a dedicated device, operating in full screen mode and preventing the user from using other functionalities. For the purpose of exemplification of our case, we used a mobile application, developed in our company for <a href="https://inero-software.com/supply-chain-management/">supply chain management</a>. This application is a part of <a href="https://deliverm8.com/">DeliverM8</a> platform, we developed in order to optimize and plan supply chain management tasks for the <a href="https://inero-software.com/deliverm8-last-mile-delivery/">last mile delivery</a>. You can read more about it <a href="https://deliverm8.com/">here</a>. Coming back to the topic of the blogpost, the final  effect is as follows:</span></p>
<p><img loading="lazy" decoding="async" data-attachment-id="3356" data-permalink="https://inero-software.com/android-kiosk-mode-how-to-turn-an-android-device-into-a-single-use-device/deliverm8-kiosk/" data-orig-file="https://inero-software.com/wp-content/uploads/2021/03/deliverM8-kiosk.png" data-orig-size="441,864" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="deliverM8-kiosk" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2021/03/deliverM8-kiosk-153x300.png" data-large-file="https://inero-software.com/wp-content/uploads/2021/03/deliverM8-kiosk.png" tabindex="0" role="button" class="aligncenter wp-image-3356 size-full" src="https://inero-software.com/wp-content/uploads/2021/03/deliverM8-kiosk.png" alt="Android Kiosk Mode visualisation" width="441" height="864" srcset="https://inero-software.com/wp-content/uploads/2021/03/deliverM8-kiosk.png 441w, https://inero-software.com/wp-content/uploads/2021/03/deliverM8-kiosk-153x300.png 153w" sizes="(max-width: 441px) 100vw, 441px" /></p>
<p><span style="font-weight: 400;"><img loading="lazy" decoding="async" data-attachment-id="2770" data-permalink="https://inero-software.com/data-the-playground-of-machine-learning/inero-glify-10-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Inero Software" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" tabindex="0" role="button" class="aligncenter wp-image-2770 size-thumbnail" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png" alt="Separating icon" width="80" height="80" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w" sizes="(max-width: 80px) 100vw, 80px" /></span></p>
<h2><span style="color: #800080;"><b>Summary</b></span></h2>
<p><span style="font-weight: 400;"><img loading="lazy" decoding="async" data-attachment-id="2873" data-permalink="https://inero-software.com/digital-twins-a-dynamic-software-model-of-reality/inero-glify-08-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png" data-orig-size="208,208" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="inero-glyph" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png" data-large-file="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png" tabindex="0" role="button" class="alignleft wp-image-2873 size-thumbnail" src="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08-80x80.png" alt="Paragraph icon" width="80" height="80" srcset="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08-50x50.png 50w, https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png 208w" sizes="(max-width: 80px) 100vw, 80px" /></span></p>
<p><span style="font-weight: 400;">In this blog post we showed how to quickly set up a configuration of a mobile application to get a single purpose device that meets our needs as much as possible. The use of the Kiosk Mode brings many benefits, such as increasing security or limiting access to undesirable functionalities, creating a solution tailored both to the needs of employees (inventory management, field service management, <a href="https://inero-software.com/logistics-solutions/">transport and logistics</a>) and customers (hospitality check-in, self-service kiosks).<br />
</span></p>
<p></p></div><div class="col-sm-1"></div></div>
<h4><b>In <a href="https://inero-software.com">Inero Software</a> – software development agency, we are experts of digital transformation and smart automation. We provide knowledge and expertise on how to successfully use cutting edge technologies and data to shape corporate digital products of the future. Find out more visiting our website or contacting us directly on <a href="mailto:hi@inero-software.com">hi@inero-software.com</a></b></h4>
<p>Artykuł <a href="https://inero-software.com/android-kiosk-mode-how-to-turn-an-android-device-into-a-single-use-device/">Android Kiosk Mode &#8211; how to turn an Android device into a single-use device</a> pochodzi z serwisu <a href="https://inero-software.com">Inero Software - Software Consulting</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3353</post-id>	</item>
	</channel>
</rss>
