<?xml version="1.0" encoding="UTF-8" standalone="no"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:gd="http://schemas.google.com/g/2005" xmlns:georss="http://www.georss.org/georss" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-1278002805699073381</atom:id><lastBuildDate>Sun, 04 Oct 2026 19:28:50 +0000</lastBuildDate><category>ASP.NET MVC</category><category>EntityFramework</category><category>WCF</category><category>WCF Exception</category><category>.NET</category><category>Async Programming</category><category>CommerceServer</category><category>c#.net</category><category>ASP.NET</category><category>ASP.NET MVC Client side validations</category><category>ASP.NET MVC Exceptions</category><category>ASP.NET Resources</category><category>Action method  calling twice</category><category>B1 Interview Questions</category><category>B1 visa</category><category>Browser Detect</category><category>CS2009</category><category>Case study IT project failure</category><category>Close IE browser debug</category><category>Disable Button</category><category>Dynamics Marketing</category><category>ELMAH</category><category>Excel</category><category>HTML extensions</category><category>IE 7 Developer Tool bar</category><category>IE browser close</category><category>IIS</category><category>IT project failure</category><category>Introduction to JQuery</category><category>JSON is Undefined</category><category>JavaScript</category><category>Light Switch</category><category>LightSwitch</category><category>MS Office</category><category>MS SQL Server</category><category>Page load calling twice</category><category>Performance guidelines</category><category>PowerShell</category><category>Report Viewer</category><category>SQL</category><category>SQL Server</category><category>Session time out</category><category>Sodexo Expires</category><category>Sticky notes</category><category>TFS For Java</category><category>TOGAF</category><category>TableTypes</category><category>User Control</category><category>VS</category><category>VS2010 add ons</category><category>VS2010 plug in</category><category>VS2013</category><category>Visa Questions</category><category>Visual Studio</category><category>WCF Maximum size</category><category>WindowsAzure</category><category>alert box</category><category>anksh</category><category>browser caching</category><category>check box change</category><category>default image</category><category>eFilling</category><category>getJSON</category><category>globalization vs localization</category><category>jQuery Ajax error handling</category><category>jQuery Disable button</category><category>jre</category><category>json IE error</category><category>performance</category><category>updateprogress</category><category>xml</category><title>Srinivas Blog </title><description>Read more and code less</description><link>http://skonakanchi.blogspot.com/</link><managingEditor>noreply@blogger.com (Srinivasa Konakanchi)</managingEditor><generator>Blogger</generator><openSearch:totalResults>122</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><language>en-us</language><itunes:explicit>no</itunes:explicit><itunes:subtitle>Read more and code less</itunes:subtitle><itunes:owner><itunes:email>noreply@blogger.com</itunes:email></itunes:owner><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1278002805699073381.post-7412178720833889248</guid><pubDate>Sun, 04 Oct 2026 18:24:45 +0000</pubDate><atom:updated>2026-10-04T15:28:50.707-04:00</atom:updated><title/><description>&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
&lt;meta charset="utf-8"&gt;
&lt;title&gt;What Is an AI Agent? The Morning My Assistant Stopped Answering and Started Working&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;What Is an AI Agent? The Morning My Assistant Stopped Answering and Started Working&lt;/h1&gt;

&lt;p&gt;Last Tuesday morning, I had one of those starts every developer knows. Coffee half-made. Three meeting documents open. A slide deck half-finished. And my standup in twenty minutes.&lt;/p&gt;

&lt;p&gt;I needed one short brief: what did we decide last week, and what is still open?&lt;/p&gt;

&lt;p&gt;The old way  I'd open a chatbot, paste in chunks of text, copy the answers out, and stitch everything together myself. Twenty minutes of copy-paste before I'd even started my day. It helped, but I was still doing all the work. The AI just answered.&lt;/p&gt;

&lt;p&gt;So that morning I tried something different. I gave the AI a goal instead of a question:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Go through these three documents. Pull out every decision we made and every question still open. Give me one short brief."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;And then I watched it work.&lt;/p&gt;

&lt;p&gt;It opened the first document and skimmed it. Then the second. Then the third. It pulled dates, names, decisions. Halfway through, it went back to page two of the first doc — it had missed a decision and caught itself.&lt;/p&gt;

&lt;p&gt;Three minutes later I had my brief.&lt;/p&gt;

&lt;p&gt;It made one mistake , it merged two meetings from different days into one. I pointed it out. It fixed it in ten seconds.&lt;/p&gt;

&lt;p&gt;That small morning is when it clicked for me. A &lt;strong&gt;chatbot&lt;/strong&gt; is like a friend who answers questions from memory. Good friend. Quick answers. But you still do everything else yourself. An &lt;strong&gt;agent&lt;/strong&gt; is like an intern you hand a folder to. The intern reads the folder, makes a plan, does the work step by step, checks the result, and comes back with something finished.&lt;/p&gt;

&lt;p&gt;Same AI brain. Completely different job.&lt;/p&gt;

&lt;p&gt;Here's the simple way I remember it now:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chatbot = talks. Agent = works.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You give an agent a goal. It breaks the goal into small steps. It uses tools — search, files, code, calendars. And it checks its own work as it goes. That's why agents are suddenly everywhere in 2026, quietly doing research, drafting reports, sorting support tickets, and writing first drafts of code while we do the parts that actually need a human brain.&lt;/p&gt;

&lt;p&gt;One honest warning from my own Tuesdays: agents move fast, and fast work can be confidently wrong ,like my two meetings that became one. So for anything that touches money, messages to real people, or a final "yes," keep a human at the end of the line. Speed is a gift. Blind trust is not.&lt;/p&gt;

&lt;p&gt;Start small. Hand it one clear task. Watch how it works. Then trust it with a little more.&lt;/p&gt;

&lt;p&gt;That's exactly what I did that Tuesday — and my standup was ready before my coffee was.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Want to learn more?&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Anthropic's engineering team on &lt;a href="https://www.anthropic.com/engineering/building-effective-agents"&gt;building effective agents&lt;/a&gt; — the best plain-language guide I've found&lt;/li&gt;
&lt;li&gt;Google Cloud's &lt;a href="https://cloud.google.com/discover/what-are-ai-agents"&gt;What are AI agents?&lt;/a&gt; — definitions, types, and where they actually get used&lt;/li&gt;
&lt;/ul&gt;

&lt;/body&gt;
&lt;/html&gt;
</description><link>http://skonakanchi.blogspot.com/2026/10/what-is-ai-agent-morning-my-assistant.html</link><author>noreply@blogger.com (Srinivasa Konakanchi)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1278002805699073381.post-5856767530682238978</guid><pubDate>Sun, 12 Jul 2026 20:06:14 +0000</pubDate><atom:updated>2026-07-12T16:06:14.585-04:00</atom:updated><title>The two-minute VS Code fix that ended my "which window is which" problem</title><description>&lt;p&gt;&amp;nbsp;I didn't realize how much a tiny thing was bugging me until I fixed it.&lt;/p&gt;&lt;div class="ql-block" data-block-id="block-BchojvXUCI"&gt;On any given day I've got four or five VS Code windows open. A client repo, some infra scripts, a notes folder, a sandbox I'm poking at. And every time I'd hover over the taskbar to switch between them, Windows would show me the same unhelpful thing for each one:&lt;/div&gt;&lt;pre style="line-height: 1.5; margin: 0;"&gt;settings.json - my-project
package.json - my-project
README.md - my-project
&lt;/pre&gt;&lt;div class="ql-block" data-block-id="block-zaAs59G8yn"&gt;The file name first. The project name second, usually cut off. So the one piece of information I actually needed — &lt;em&gt;which project is this?&lt;/em&gt; — was the part getting truncated. I'd end up clicking through windows one by one like I was checking pockets for my keys.&lt;/div&gt;&lt;div class="ql-block" data-block-id="block-xAlNxQkZ0x"&gt;Turns out VS Code lets you fix this in about two minutes.&lt;/div&gt;&lt;h2 class="ql-heading" data-block-id="block-3y11GeoihD" data-collapse-state="expanded"&gt;The setting&lt;/h2&gt;&lt;div class="ql-block" data-block-id="block-A2i0EkhrQT"&gt;There's a setting called &lt;code&gt;window.title&lt;/code&gt; that controls exactly what shows up in the title bar (and, importantly, in that taskbar hover tooltip). By default it leads with the active file. You just flip it around so it leads with the folder name.&lt;/div&gt;&lt;div class="ql-block" data-block-id="block-r12hJcGJX-"&gt;Open your settings JSON (&lt;code&gt;Ctrl+Shift+P&lt;/code&gt; → "Preferences: Open User Settings (JSON)") and add:&lt;/div&gt;&lt;pre style="line-height: 1.5; margin: 0;"&gt;"window.title": "${rootName}${separator}${appName}"
&lt;/pre&gt;&lt;div class="ql-block" data-block-id="block-E2RnANhPy9"&gt;That's it. Now every window announces itself as:&lt;/div&gt;&lt;pre style="line-height: 1.5; margin: 0;"&gt;my-project — Visual Studio Code
&lt;/pre&gt;&lt;div class="ql-block" data-block-id="block-ZfMX7Hh3as"&gt;No file name, no clutter, just the thing I care about. Hover over the taskbar and I know instantly which project I'm looking at.&lt;/div&gt;&lt;h2 class="ql-heading" data-block-id="block-PkAcKfu5K0" data-collapse-state="expanded"&gt;The variables, if you want to tweak it&lt;/h2&gt;&lt;div class="ql-block" data-block-id="block-qbJ5UnLCNv"&gt;VS Code gives you a handful of placeholders you can mix and match:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;${rootName}&lt;/code&gt; — your workspace or folder name (the project)&lt;/li&gt;&lt;li&gt;&lt;code&gt;${activeEditorShort}&lt;/code&gt; — the current file name&lt;/li&gt;&lt;li&gt;&lt;code&gt;${appName}&lt;/code&gt; — "Visual Studio Code"&lt;/li&gt;&lt;li&gt;&lt;code&gt;${separator}&lt;/code&gt; — a tidy &lt;code&gt;—&lt;/code&gt; divider that politely disappears when a segment is empty&lt;/li&gt;&lt;/ul&gt;&lt;div class="ql-block" data-block-id="block-tROnDtA1-G"&gt;So if you &lt;em&gt;do&lt;/em&gt; still want the file name, just put the project first where it belongs:&lt;/div&gt;&lt;pre style="line-height: 1.5; margin: 0;"&gt;"window.title": "${rootName}${separator}${activeEditorShort}"
&lt;/pre&gt;&lt;div class="ql-block" data-block-id="block-HZ2TRbQx2l"&gt;And if you like things to really jump out, wrap the project name in brackets:&lt;/div&gt;&lt;pre style="line-height: 1.5; margin: 0;"&gt;"window.title": "[${rootName}]${separator}${activeEditorShort}"
&lt;/pre&gt;&lt;div class="ql-block" data-block-id="block-yvHZFVhdFW"&gt;Put this in your &lt;strong&gt;User&lt;/strong&gt; settings (not a workspace &lt;code&gt;.vscode/settings.json&lt;/code&gt;) so it applies to every project you open, not just one.&lt;/div&gt;&lt;h2 class="ql-heading" data-block-id="block-CdyeVrbE1p" data-collapse-state="expanded"&gt;Bonus: give each project a color&lt;/h2&gt;&lt;div class="ql-block" data-block-id="block-OGzKoN6oFI"&gt;Once I'd fixed the name, I went one step further. You can tint the title bar a different color per project, so you're not even reading — you just &lt;em&gt;see&lt;/em&gt; which one you're in. Drop this in a repo's &lt;code&gt;.vscode/settings.json&lt;/code&gt;:&lt;/div&gt;&lt;pre style="line-height: 1.5; margin: 0;"&gt;{
  "workbench.colorCustomizations": {
    "titleBar.activeBackground": "#283324",
    "titleBar.inactiveBackground": "#394635"
  }
}
&lt;/pre&gt;&lt;div class="ql-block" data-block-id="block-6zlqfTOzyP"&gt;Now my client work is green, my infra repo is a deep blue, my sandbox is a slightly alarming orange. The name tells me the details; the color tells me at a glance. Muscle memory took over within a day.&lt;/div&gt;&lt;h2 class="ql-heading" data-block-id="block-Rz7DqUrl4m" data-collapse-state="expanded"&gt;Why such a small thing matters&lt;/h2&gt;&lt;div class="ql-block" data-block-id="block-alnMWc8vbq"&gt;None of this is clever. It's not a productivity hack that's going to 10x anything. But context-switching has a cost, and every little "wait, which window is this" moment is a tiny tax on your attention. Removing a dozen of those a day adds up to a workspace that just feels calmer.&lt;/div&gt;&lt;div class="ql-block" data-block-id="block-oc_qzDZkkf"&gt;Two minutes, two settings. Worth it.&lt;/div&gt;&lt;br /&gt;</description><link>http://skonakanchi.blogspot.com/2026/07/the-two-minute-vs-code-fix-that-ended.html</link><author>noreply@blogger.com (Srinivasa Konakanchi)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1278002805699073381.post-8019491236414534594</guid><pubDate>Fri, 01 May 2026 18:56:00 +0000</pubDate><atom:updated>2026-05-01T14:56:34.316-04:00</atom:updated><title>Building a Python Async Client for an MCP Server</title><description>&lt;p&gt;&amp;nbsp;&lt;span style="font-family: -apple-system; font-size: 9.75pt;"&gt;MCP
(Model Context Protocol) is gaining traction as a standard way for AI tools to
call external services. Most examples show MCP clients in TypeScript. Here's
how I built one in Python, wiring an npm-based MCP server into a FastAPI async
backend.&lt;/span&gt;&lt;/p&gt;

&lt;p style="font-family: -apple-system; font-size: 18pt; margin: 0in;"&gt;&lt;span style="font-weight: bold;"&gt;The Idea&lt;/span&gt;&lt;/p&gt;

&lt;p style="font-family: -apple-system; margin: 0in;"&gt;&lt;span style="font-size: 9.75pt;"&gt;The MCP server I needed wraps the Jira API -- it exposes tools
like &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;jira_search_issues&lt;/span&gt;&lt;span style="font-size: 9.75pt;"&gt;, &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;jira_create_issue&lt;/span&gt;&lt;span style="font-size: 9.75pt;"&gt;, and &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;jira_get_transitions&lt;/span&gt;&lt;span style="font-size: 9.75pt;"&gt;. The server speaks JSON-RPC 2.0 over
stdio: you spawn it as a subprocess, write requests to its stdin, and read
responses from its stdout.&lt;/span&gt;&lt;/p&gt;

&lt;p style="font-family: -apple-system; font-size: 18pt; margin: 0in;"&gt;&lt;span style="font-weight: bold;"&gt;Spawning the Server&lt;/span&gt;&lt;/p&gt;

&lt;p style="font-family: -apple-system; margin: 0in;"&gt;&lt;span style="font-size: 9.75pt;"&gt;Python's &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;asyncio.create_subprocess_exec&lt;/span&gt;&lt;span style="font-size: 9.75pt;"&gt; handles this cleanly:&lt;/span&gt;&lt;/p&gt;

&lt;p style="font-family: -apple-system; font-size: 10pt; margin: 0in;"&gt;self._proc
= await asyncio.create_subprocess_exec(&lt;br /&gt;
&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;"npx", "--yes",
"@xuandev/atlassian-mcp",&lt;br /&gt;
&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;stdin=asyncio.subprocess.PIPE,&lt;br /&gt;
&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;stdout=asyncio.subprocess.PIPE,&lt;br /&gt;
&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;stderr=asyncio.subprocess.PIPE,&lt;br /&gt;
&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;env=env,&lt;br /&gt;
)&lt;/p&gt;

&lt;p style="font-family: -apple-system; margin: 0in;"&gt;&lt;span style="font-size: 9.75pt;"&gt;Credentials (API token, domain, email) go into the &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;env&lt;/span&gt;&lt;span style="font-size: 9.75pt;"&gt; dict -- no hardcoding, no extra config files.&lt;/span&gt;&lt;/p&gt;

&lt;p style="font-family: -apple-system; font-size: 18pt; margin: 0in;"&gt;&lt;span style="font-weight: bold;"&gt;The MCP Handshake&lt;/span&gt;&lt;/p&gt;

&lt;p style="font-family: -apple-system; margin: 0in;"&gt;&lt;span style="font-size: 9.75pt;"&gt;Before calling any tools, MCP requires an initialization
exchange. Send an &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;initialize&lt;/span&gt;&lt;span style="font-size: 9.75pt;"&gt; request, get capabilities back, then
send a &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;notifications/initialized&lt;/span&gt;&lt;span style="font-size: 9.75pt;"&gt; one-way notification. Only after this
handshake are tool calls available.&lt;/span&gt;&lt;/p&gt;

&lt;p style="font-family: -apple-system; font-size: 18pt; margin: 0in;"&gt;&lt;span style="font-weight: bold;"&gt;Request/Response Correlation&lt;/span&gt;&lt;/p&gt;

&lt;p style="font-family: -apple-system; margin: 0in;"&gt;&lt;span style="font-size: 9.75pt;"&gt;The tricky part with stdio JSON-RPC is that notifications can
arrive interleaved with responses. The solution: attach an incrementing &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;id&lt;/span&gt;&lt;span style="font-size: 9.75pt;"&gt; to every request and skip responses until the matching &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;id&lt;/span&gt;&lt;span style="font-size: 9.75pt;"&gt; comes back.&lt;/span&gt;&lt;/p&gt;

&lt;p style="font-family: -apple-system; font-size: 10pt; margin: 0in;"&gt;async
def _rpc(self, method, params, timeout=30.0):&lt;br /&gt;
&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;msg_id = self._next_id&lt;br /&gt;
&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;self._next_id += 1&lt;br /&gt;
&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;await self._send({"jsonrpc":
"2.0", "id": msg_id, "method": method,
"params": params})&lt;br /&gt;
&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;while True:&lt;br /&gt;
&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;resp = await self._recv(timeout=timeout)&lt;br /&gt;
&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;if resp.get("id") !=
msg_id:&lt;br /&gt;
&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;continue&lt;br /&gt;
&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;if "error" in resp:&lt;br /&gt;
&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;raise JiraMcpError(f"MCP
error: {resp['error']}")&lt;br /&gt;
&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;return
resp.get("result")&lt;/p&gt;

&lt;p style="font-family: -apple-system; margin: 0in;"&gt;&lt;span style="font-size: 9.75pt;"&gt;Each &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;_recv&lt;/span&gt;&lt;span style="font-size: 9.75pt;"&gt; awaits &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;proc.stdout.readline()&lt;/span&gt;&lt;span style="font-size: 9.75pt;"&gt;, so the loop yields to the event loop between reads -- no
busy-waiting.&lt;/span&gt;&lt;/p&gt;

&lt;p style="font-family: -apple-system; font-size: 18pt; margin: 0in;"&gt;&lt;span style="font-weight: bold;"&gt;Lifecycle as a Context Manager&lt;/span&gt;&lt;/p&gt;

&lt;p style="font-family: -apple-system; font-size: 9.75pt; margin: 0in;"&gt;Wrapping
everything in an async context manager keeps usage clean:&lt;/p&gt;

&lt;p style="font-family: -apple-system; font-size: 10pt; margin: 0in;"&gt;async
with JiraMcpClient() as client:&lt;br /&gt;
&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;issues = await
client.search_issues("project = MYPROJ ORDER BY priority ASC")&lt;br /&gt;
&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;new_key = await client.create_issue("MYPROJ",
"Fix login bug", "Steps to reproduce...")&lt;/p&gt;

&lt;p style="font-family: -apple-system; margin: 0in;"&gt;&lt;span style="font-size: 9.75pt;"&gt;The subprocess spawns on &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;__aenter__&lt;/span&gt;&lt;span style="font-size: 9.75pt;"&gt;
and gets killed on &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;__aexit__&lt;/span&gt;&lt;span style="font-size: 9.75pt;"&gt;, exception or not.&lt;/span&gt;&lt;/p&gt;

&lt;p style="font-family: -apple-system; font-size: 18pt; margin: 0in;"&gt;&lt;span style="font-weight: bold;"&gt;What I Learned&lt;/span&gt;&lt;/p&gt;

&lt;p style="font-family: -apple-system; margin: 0in;"&gt;&lt;span style="font-size: 9.75pt;"&gt;The stdio transport is underrated. No ports, no HTTP server, no
authentication layer -- just a process. If you need to integrate an
MCP-compatible server into a backend that already uses &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;asyncio&lt;/span&gt;&lt;span style="font-size: 9.75pt;"&gt;, this pattern works well and is surprisingly easy to
test: mock the subprocess with &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;AsyncMock&lt;/span&gt;&lt;span style="font-size: 9.75pt;"&gt; and feed it canned JSON-RPC responses.&lt;/span&gt;&lt;/p&gt;

&lt;p style="font-family: -apple-system; font-size: 9.75pt; margin: 0in;"&gt;The
full client -- handshake, tool dispatch, response parsing, feature-flag gating
-- came in under 200 lines of Python. That's a reasonable price for full Jira
integration without touching the REST API directly.&lt;/p&gt;</description><link>http://skonakanchi.blogspot.com/2026/05/building-python-async-client-for-mcp.html</link><author>noreply@blogger.com (Srinivasa Konakanchi)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1278002805699073381.post-1485318850004326459</guid><pubDate>Wed, 28 May 2025 01:02:00 +0000</pubDate><atom:updated>2026-03-12T20:36:04.961-04:00</atom:updated><title>Setting Up Azure DevOps Pipeline for Dynamics 365 Managed Solution Deployment</title><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Recently, I had the opportunity to set up an Azure DevOps pipeline to automate the deployment of &lt;strong&gt;Managed Solutions&lt;/strong&gt; in &lt;strong&gt;Dynamics 365 Customer Engagement (Dataverse)&lt;/strong&gt;. The goal was to streamline the release process across multiple environments (ITG → PreProd → Production) with minimal manual intervention.&lt;/p&gt;
&lt;p&gt;While the process involves a bit of configuration and understanding of Microsoft’s Power Platform tooling, once it’s in place, it can save a lot of time and reduce deployment errors. In this post, I’ll walk through the approach I followed and point to the official documentation that helped me along the way.&lt;/p&gt;
&lt;h2&gt;&amp;nbsp;Objectives&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Export and store Managed Solution from source environment (e.g., Dev or ITG)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use Azure DevOps Pipeline to deploy the solution into target environments&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Parameterize the deployment using variables&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ensure auditability and automation across environments&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h2&gt;&amp;nbsp;Tools &amp;amp; Prerequisites&lt;/h2&gt;
&lt;p&gt;To begin with, here are the core tools and prerequisites:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Azure DevOps Project&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Power Platform Build Tools Extension&lt;/strong&gt; (Install from &lt;a href="https://marketplace.visualstudio.com/items?itemName=microsoft-IsvExpTools.PowerPlatform-BuildTools"&gt;Marketplace&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Service Principal or Application User&lt;/strong&gt; with environment-level access&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Power Platform CLI (PAC CLI)&lt;/strong&gt; – optional for local testing&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h2&gt;&amp;nbsp;Solution Setup in DevOps&lt;/h2&gt;
&lt;h3&gt;1. &lt;strong&gt;Install Power Platform Build Tools&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;This extension provides Azure DevOps tasks for working with Power Platform and Dataverse. You can install it from the Visual Studio Marketplace:&lt;/p&gt;
&lt;p&gt;&#128279; &lt;a href="https://marketplace.visualstudio.com/items?itemName=microsoft-IsvExpTools.PowerPlatform-BuildTools"&gt;Power Platform Build Tools&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;2. &lt;strong&gt;Create a Service Connection&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Go to &lt;code inline=""&gt;Project Settings &amp;gt; Service Connections &amp;gt; New Service Connection &amp;gt; Power Platform&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;You’ll need:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Client ID&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Client Secret&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Tenant ID&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Environment URL&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Follow the guide:&lt;br /&gt;
&#128216; &lt;a href="https://learn.microsoft.com/en-us/power-platform/alm/devops-build-tools-auth#register-an-application-in-azure-active-directory"&gt;Set up a service principal&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;3. &lt;strong&gt;Define Pipeline Structure&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Here’s an outline of how the pipeline is structured:&lt;/p&gt;
&lt;h4&gt;&lt;strong&gt;Stage 1: Export Solution from Source Environment&lt;/strong&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Power Platform Tool Installer&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Export Solution Task&lt;/strong&gt; (Set &lt;code inline=""&gt;Export As = Managed&lt;/code&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Upload Artifacts&lt;/strong&gt; (Store &lt;code inline=""&gt;.zip&lt;/code&gt; file)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;strong&gt;Stage 2: Import Solution into Target Environment&lt;/strong&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Download Artifacts&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Import Solution Task&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Publish All Customizations&lt;/strong&gt; &lt;em&gt;(optional but recommended)&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can also enable "Check Solution" before import for validation.&lt;/p&gt;
&lt;h3&gt;4. &lt;strong&gt;Sample YAML Pipeline Snippet&lt;/strong&gt;&lt;/h3&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;trigger:
- main

pool:
  vmImage: 'windows-latest'

variables:
  SolutionName: 'MyManagedSolution'
  EnvironmentUrl: 'https://myenv.crm.dynamics.com'

stages:
- stage: ExportSolution
  jobs:
  - job: Export
    steps:
    - task: PowerPlatformToolInstaller@2
    - task: PowerPlatformExportSolution@2
      inputs:
        authenticationType: 'PowerPlatformSPN'
        PowerPlatformSPN: 'MyServiceConnection'
        solutionName: '$(SolutionName)'
        solutionOutputFile: '$(Build.ArtifactStagingDirectory)/$(SolutionName).zip'
        managed: true
    - task: PublishBuildArtifacts@1
      inputs:
        pathToPublish: '$(Build.ArtifactStagingDirectory)'
        artifactName: 'solutionArtifact'

- stage: ImportSolution
  dependsOn: ExportSolution
  jobs:
  - job: Import
    steps:
    - task: DownloadBuildArtifacts@0
      inputs:
        artifactName: 'solutionArtifact'
    - task: PowerPlatformImportSolution@2
      inputs:
        authenticationType: 'PowerPlatformSPN'
        PowerPlatformSPN: 'MyServiceConnection'
        environmentUrl: '$(EnvironmentUrl)'
        solutionInputFile: '$(Pipeline.Workspace)/solutionArtifact/$(SolutionName).zip'&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;&amp;nbsp;Tips and Best Practices&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Use variables/groups&lt;/strong&gt; for managing credentials and URLs&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Split pipelines&lt;/strong&gt; by environment stages for approvals&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Set &lt;code inline=""&gt;Async Operations&lt;/code&gt; timeout&lt;/strong&gt; for large solutions&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Use PAC CLI locally&lt;/strong&gt; for troubleshooting before automating&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h2&gt;&amp;nbsp;Additional Resources&lt;/h2&gt;
&lt;p&gt;Here are some helpful links I relied on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&#128279; &lt;a href="https://learn.microsoft.com/en-us/power-platform/alm/devops-build-tools"&gt;Power Platform Build Tools documentation&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&#128279; &lt;a href="https://learn.microsoft.com/en-us/power-platform/alm/devops-build-tools-auth"&gt;Authenticate with Azure AD using Service Principal&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&#128279; &lt;a href="https://learn.microsoft.com/en-us/power-platform/alm/"&gt;ALM in Microsoft Power Platform&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h2&gt;&amp;nbsp;Final Thoughts&lt;/h2&gt;
&lt;p&gt;This experience really showcased the power of DevOps in enterprise Dynamics 365 development. With a properly set up pipeline, deployments become repeatable, reliable, and consistent. If you're just getting started, I highly recommend playing with PAC CLI locally before configuring your pipelines.&lt;/p&gt;
&lt;p&gt;Have you tried DevOps with Dynamics 365? Feel free to share your thoughts or questions!&lt;/p&gt;
&lt;br /&gt;</description><link>http://skonakanchi.blogspot.com/2025/05/setting-up-azure-devops-pipeline-for.html</link><author>noreply@blogger.com (Srinivasa Konakanchi)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1278002805699073381.post-8475141553834873324</guid><pubDate>Wed, 14 May 2025 01:52:00 +0000</pubDate><atom:updated>2025-05-13T21:52:08.660-04:00</atom:updated><title>From Campaign Chaos to Customer Connection: How the New Dynamics 365 Marketing Changes Are Revolutionizing Engagement</title><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;h1 class="" data-end="320" data-start="198"&gt;&#127775; The Backstory: A Marketing Manager’s Wake-Up Call&lt;/h1&gt;
&lt;p class="" data-end="476" data-start="379"&gt;Last quarter, Amanda, a seasoned Marketing Manager at a mid-sized retail company, was frustrated.&lt;/p&gt;
&lt;p class="" data-end="714" data-start="478"&gt;She had just wrapped up a campaign that &lt;em data-end="531" data-start="518"&gt;should have&lt;/em&gt; driven conversions. But the numbers told a different story—email open rates were low, customer journeys weren’t converting, and real-time decisions were more of a dream than reality.&lt;/p&gt;
&lt;p class="" data-end="797" data-start="716"&gt;That’s when she saw the update notification for Microsoft Dynamics 365 Marketing.&lt;/p&gt;
&lt;p class="" data-end="917" data-start="799"&gt;Curious (and a bit desperate), Amanda clicked in—and what she found changed how her team approached marketing forever.&lt;/p&gt;
&lt;p class="" data-end="1051" data-start="919"&gt;Welcome to the &lt;strong data-end="964" data-start="934"&gt;new Dynamics 365 Marketing&lt;/strong&gt;, where personalization is smarter, journeys are real-time, and data drives every move.&lt;/p&gt;
&lt;hr class="" data-end="1056" data-start="1053" /&gt;
&lt;h2 class="" data-end="1143" data-start="1058"&gt;&#128640; What’s New in Dynamics 365 Marketing (Now Part of Customer Insights - Journeys)&lt;/h2&gt;
&lt;p class="" data-end="1309" data-start="1145"&gt;Microsoft has integrated Dynamics 365 Marketing into &lt;strong data-end="1230" data-start="1198"&gt;Customer Insights – Journeys&lt;/strong&gt;, creating a seamless platform for data-driven, real-time customer experiences.&lt;/p&gt;
&lt;p class="" data-end="1346" data-start="1311"&gt;Here are the game-changing updates:&lt;/p&gt;
&lt;hr class="" data-end="1351" data-start="1348" /&gt;
&lt;h3 class="" data-end="1412" data-start="1353"&gt;&#128161; 1. Real-Time Marketing is Now the Default Experience&lt;/h3&gt;
&lt;p class="" data-end="1505" data-start="1414"&gt;&lt;strong data-end="1425" data-start="1414"&gt;Old Way&lt;/strong&gt;: Outbound marketing was the primary model—scheduled campaigns, static segments.&lt;/p&gt;
&lt;p class="" data-end="1645" data-start="1507"&gt;&lt;strong data-end="1518" data-start="1507"&gt;New Way&lt;/strong&gt;: &lt;strong data-end="1543" data-start="1520"&gt;Real-time marketing&lt;/strong&gt; is now front and center, allowing businesses to trigger journeys instantly based on customer actions.&lt;/p&gt;
&lt;p class="" data-end="1666" data-start="1647"&gt;✅ &lt;strong data-end="1665" data-start="1649"&gt;Key Features&lt;/strong&gt;:&lt;/p&gt;
&lt;ul data-end="1794" data-start="1667"&gt;
&lt;li class="" data-end="1729" data-start="1667"&gt;
&lt;p class="" data-end="1729" data-start="1669"&gt;Event-triggered journeys (e.g., form submissions, purchases)&lt;/p&gt;
&lt;/li&gt;
&lt;li class="" data-end="1763" data-start="1730"&gt;
&lt;p class="" data-end="1763" data-start="1732"&gt;Dynamic content personalization&lt;/p&gt;
&lt;/li&gt;
&lt;li class="" data-end="1794" data-start="1764"&gt;
&lt;p class="" data-end="1794" data-start="1766"&gt;AI-powered channel selection&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="" data-end="1940" data-start="1796"&gt;&#128279; &lt;a class="" data-end="1940" data-start="1799" href="https://learn.microsoft.com/en-us/dynamics365/customer-insights/journeys/real-time-marketing-overview" rel="noopener" target="_new"&gt;Learn more about real-time marketing&lt;/a&gt;&lt;/p&gt;
&lt;hr class="" data-end="1945" data-start="1942" /&gt;
&lt;h3 class="" data-end="2014" data-start="1947"&gt;&#128260; 2. Unified Customer Data with Dynamics 365 Customer Insights&lt;/h3&gt;
&lt;p class="" data-end="2162" data-start="2016"&gt;By combining &lt;strong data-end="2057" data-start="2029"&gt;Customer Insights - Data&lt;/strong&gt; and &lt;strong data-end="2094" data-start="2062"&gt;Customer Insights - Journeys&lt;/strong&gt;, marketers now have a 360° customer view that updates in real-time.&lt;/p&gt;
&lt;p class="" data-end="2176" data-start="2164"&gt;&#128165; Benefits:&lt;/p&gt;
&lt;ul data-end="2298" data-start="2177"&gt;
&lt;li class="" data-end="2222" data-start="2177"&gt;
&lt;p class="" data-end="2222" data-start="2179"&gt;Unified profiles from multiple data sources&lt;/p&gt;
&lt;/li&gt;
&lt;li class="" data-end="2245" data-start="2223"&gt;
&lt;p class="" data-end="2245" data-start="2225"&gt;AI-enriched segments&lt;/p&gt;
&lt;/li&gt;
&lt;li class="" data-end="2298" data-start="2246"&gt;
&lt;p class="" data-end="2298" data-start="2248"&gt;Seamless handoff between sales and marketing teams&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="" data-end="2434" data-start="2300"&gt;&#128279; &lt;a class="" data-end="2434" data-start="2303" href="https://learn.microsoft.com/en-us/dynamics365/customer-insights/journeys/customer-profile" rel="noopener" target="_new"&gt;Unified Customer Profile Documentation&lt;/a&gt;&lt;/p&gt;
&lt;hr class="" data-end="2439" data-start="2436" /&gt;
&lt;h3 class="" data-end="2488" data-start="2441"&gt;✍️ 3. Enhanced Personalization with Copilot&lt;/h3&gt;
&lt;p class="" data-end="2596" data-start="2490"&gt;Microsoft’s &lt;strong data-end="2540" data-start="2502"&gt;Copilot for Dynamics 365 Marketing&lt;/strong&gt; introduces AI-powered content creation and suggestions.&lt;/p&gt;
&lt;p class="" data-end="2614" data-start="2598"&gt;&#129504; Capabilities:&lt;/p&gt;
&lt;ul data-end="2773" data-start="2615"&gt;
&lt;li class="" data-end="2661" data-start="2615"&gt;
&lt;p class="" data-end="2661" data-start="2617"&gt;Auto-generate email content based on prompts&lt;/p&gt;
&lt;/li&gt;
&lt;li class="" data-end="2710" data-start="2662"&gt;
&lt;p class="" data-end="2710" data-start="2664"&gt;Recommend subject lines to increase open rates&lt;/p&gt;
&lt;/li&gt;
&lt;li class="" data-end="2773" data-start="2711"&gt;
&lt;p class="" data-end="2773" data-start="2713"&gt;Analyze campaign effectiveness with natural language queries&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="" data-end="2899" data-start="2775"&gt;&#128216; &lt;a class="" data-end="2899" data-start="2778" href="https://learn.microsoft.com/en-us/dynamics365/customer-insights/journeys/copilot-overview" rel="noopener" target="_new"&gt;Explore Copilot in Marketing&lt;/a&gt;&lt;/p&gt;
&lt;hr class="" data-end="2904" data-start="2901" /&gt;
&lt;h3 class="" data-end="2940" data-start="2906"&gt;&#128257; 4. New Channel Integrations&lt;/h3&gt;
&lt;p class="" data-end="3016" data-start="2942"&gt;Customers don’t live in just one inbox—and now, neither do your campaigns.&lt;/p&gt;
&lt;p class="" data-end="3037" data-start="3018"&gt;&#128241; Channel Updates:&lt;/p&gt;
&lt;ul data-end="3166" data-start="3038"&gt;
&lt;li class="" data-end="3087" data-start="3038"&gt;
&lt;p class="" data-end="3087" data-start="3040"&gt;SMS powered by &lt;strong data-end="3087" data-start="3055"&gt;Azure Communication Services&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class="" data-end="3129" data-start="3088"&gt;
&lt;p class="" data-end="3129" data-start="3090"&gt;In-app messaging and push notifications&lt;/p&gt;
&lt;/li&gt;
&lt;li class="" data-end="3166" data-start="3130"&gt;
&lt;p class="" data-end="3166" data-start="3132"&gt;Microsoft Teams events integration&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="" data-end="3308" data-start="3168"&gt;&#128216; &lt;a class="" data-end="3308" data-start="3171" href="https://learn.microsoft.com/en-us/dynamics365/customer-insights/journeys/channels-overview" rel="noopener" target="_new"&gt;Channel Capabilities in Real-Time Marketing&lt;/a&gt;&lt;/p&gt;
&lt;hr class="" data-end="3313" data-start="3310" /&gt;
&lt;h3 class="" data-end="3355" data-start="3315"&gt;&#128202; 5. Revamped Analytics &amp;amp; Reporting&lt;/h3&gt;
&lt;p class="" data-end="3421" data-start="3357"&gt;Goodbye basic charts—hello deep insights. The new updates bring:&lt;/p&gt;
&lt;ul data-end="3540" data-start="3422"&gt;
&lt;li class="" data-end="3446" data-start="3422"&gt;
&lt;p class="" data-end="3446" data-start="3424"&gt;Journey-level insights&lt;/p&gt;
&lt;/li&gt;
&lt;li class="" data-end="3471" data-start="3447"&gt;
&lt;p class="" data-end="3471" data-start="3449"&gt;Customer path analysis&lt;/p&gt;
&lt;/li&gt;
&lt;li class="" data-end="3493" data-start="3472"&gt;
&lt;p class="" data-end="3493" data-start="3474"&gt;A/B testing results&lt;/p&gt;
&lt;/li&gt;
&lt;li class="" data-end="3540" data-start="3494"&gt;
&lt;p class="" data-end="3540" data-start="3496"&gt;Power BI integration for advanced dashboards&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="" data-end="3665" data-start="3542"&gt;&#128216; &lt;a class="" data-end="3665" data-start="3545" href="https://learn.microsoft.com/en-us/dynamics365/customer-insights/journeys/analytics-overview" rel="noopener" target="_new"&gt;Analyze Customer Journeys&lt;/a&gt;&lt;/p&gt;
&lt;hr class="" data-end="3670" data-start="3667" /&gt;
&lt;h2 class="" data-end="3724" data-start="3672"&gt;&#129504; From Amanda’s Lens: What Changed for Her Team?&lt;/h2&gt;
&lt;p class="" data-end="3789" data-start="3726"&gt;With real-time journeys and AI-powered insights, Amanda’s team:&lt;/p&gt;
&lt;ul data-end="3914" data-start="3790"&gt;
&lt;li class="" data-end="3829" data-start="3790"&gt;
&lt;p class="" data-end="3829" data-start="3792"&gt;Reduced campaign creation time by 40%&lt;/p&gt;
&lt;/li&gt;
&lt;li class="" data-end="3865" data-start="3830"&gt;
&lt;p class="" data-end="3865" data-start="3832"&gt;Increased email open rates by 27%&lt;/p&gt;
&lt;/li&gt;
&lt;li class="" data-end="3914" data-start="3866"&gt;
&lt;p class="" data-end="3914" data-start="3868"&gt;Personalized outreach for every lead, at scale&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="" data-end="3931" data-start="3916"&gt;In her words:&lt;/p&gt;
&lt;blockquote data-end="4024" data-start="3932"&gt;
&lt;p class="" data-end="4024" data-start="3934"&gt;&lt;em data-end="4024" data-start="3934"&gt;“It feels like we finally have a marketing engine that thinks with us, not just for us.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr class="" data-end="4029" data-start="4026" /&gt;
&lt;h2 class="" data-end="4072" data-start="4031"&gt;&#128172; Final Thoughts: Why You Should Care&lt;/h2&gt;
&lt;p class="" data-end="4276" data-start="4074"&gt;Whether you're a marketing director at a global enterprise or a CRM lead at a non-profit, &lt;strong data-end="4209" data-start="4164"&gt;the new Dynamics 365 Marketing experience&lt;/strong&gt; empowers you to connect, convert, and captivate like never before.&lt;/p&gt;
&lt;p class="" data-end="4403" data-start="4278"&gt;&#128279; &lt;a class="" data-end="4403" data-start="4281" href="https://learn.microsoft.com/en-us/dynamics365/customer-insights/journeys/" rel="noopener" target="_new"&gt;Get started with Customer Insights – Journeys&lt;/a&gt;&lt;/p&gt;
&lt;hr class="" data-end="4408" data-start="4405" /&gt;
&lt;h2 class="" data-end="4434" data-start="4410"&gt;&#128227; Ready to Level Up?&lt;/h2&gt;
&lt;p class="" data-end="4624" data-start="4436"&gt;If you're already using Dynamics 365 Marketing, explore the upgrade path to &lt;strong data-end="4544" data-start="4512"&gt;Customer Insights – Journeys&lt;/strong&gt;. If not, this might be the perfect time to reimagine your marketing tech stack.&lt;/p&gt;
&lt;p class="" data-end="4782" data-start="4626"&gt;&#128073; For a hands-on feel, start with Microsoft’s &lt;a class="" data-end="4781" data-start="4673" href="https://dynamics.microsoft.com/en-us/customer-insights/marketing-demo/" rel="noopener" target="_new"&gt;Customer Insights – Journeys Trial&lt;/a&gt;.&lt;/p&gt;</description><link>http://skonakanchi.blogspot.com/2025/05/from-campaign-chaos-to-customer.html</link><author>noreply@blogger.com (Srinivasa Konakanchi)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1278002805699073381.post-1633169701915912381</guid><pubDate>Tue, 13 May 2025 01:28:00 +0000</pubDate><atom:updated>2025-05-12T21:29:45.808-04:00</atom:updated><title>How I Modernized an 8-Year-Old .NET Solution Using .NET Upgrade Assistant</title><description>&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;“20+ projects. .NET Framework 4.6. Legacy dependencies. And a deadline to move everything to .NET 8.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Recently, I began the ambitious journey of migrating an &lt;strong&gt;8-year-old enterprise solution&lt;/strong&gt;—a massive monolith with over &lt;strong&gt;20 interconnected projects&lt;/strong&gt;, built on &lt;strong&gt;.NET Framework 4.6&lt;/strong&gt;, using WCF, old-school config files, and long-abandoned NuGet packages.&lt;/p&gt;
&lt;p&gt;The goal?&lt;br /&gt;
✔️ Modernize the solution&lt;br /&gt;
✔️ Make it cloud-ready&lt;br /&gt;
✔️ Target .NET 8&lt;br /&gt;
✔️ Run cross-platform&lt;/p&gt;
&lt;p&gt;At first, it felt like staring at a mountain with no visible trail. Rewriting everything from scratch wasn’t an option. I needed a guided, gradual approach—something to help me lift and shift without breaking everything in the process.&lt;/p&gt;
&lt;p&gt;That's when I discovered the &lt;strong&gt;.NET Upgrade Assistant&lt;/strong&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;&#128640; Enter: .NET Upgrade Assistant&lt;/h2&gt;
&lt;p&gt;This tool, provided by Microsoft, is a &lt;strong&gt;command-line utility that guides you through upgrading your existing .NET Framework or .NET Core projects&lt;/strong&gt; to modern .NET versions (6, 7, or 8).&lt;/p&gt;
&lt;p&gt;What makes it special is that it doesn’t just convert your project file—it walks through your entire solution, &lt;strong&gt;project by project&lt;/strong&gt;, making incremental, intelligent suggestions and transformations.&lt;/p&gt;
&lt;h3&gt;&#128216; Official Docs:&lt;/h3&gt;
&lt;p&gt;&#128073; &lt;a href="https://learn.microsoft.com/en-us/dotnet/upgrade-assistant/"&gt;https://learn.microsoft.com/en-us/dotnet/upgrade-assistant/&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;&#128161; Why Use .NET Upgrade Assistant?&lt;/h2&gt;
&lt;p&gt;Here’s what stood out to me:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Step-by-step CLI guidance&lt;/strong&gt; instead of just scripts&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Automated backup&lt;/strong&gt; of your solution&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Dependency analysis&lt;/strong&gt; and recommendations&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Target framework upgrades&lt;/strong&gt; to .NET 6, 7, or 8&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Support for &lt;strong&gt;ASP.NET MVC, WPF, WinForms, Class Libraries&lt;/strong&gt;, etc.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Great integration with modern tools like &lt;code inline=""&gt;try-convert&lt;/code&gt;, analyzers, and Roslyn-based refactoring&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;&#128736;️ Step-by-Step: My Upgrade Journey&lt;/h2&gt;
&lt;h3&gt;&lt;strong&gt;Step 1: Installing the Assistant&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;I started by installing the tool globally:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;dotnet tool install -g upgrade-assistant
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To ensure I always had the latest version:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;dotnet tool update -g upgrade-assistant
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h3&gt;&lt;strong&gt;Step 2: Running the Upgrade&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;I moved into my solution directory and ran:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;upgrade-assistant upgrade MyLegacySolution.sln
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It launched an interactive experience—asking which project to upgrade first, what changes to apply, and whether I wanted to proceed step-by-step.&lt;/p&gt;
&lt;p&gt;The tool processed each project by:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Updating &lt;code inline=""&gt;TargetFramework&lt;/code&gt; to &lt;code inline=""&gt;net8.0&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Migrating from &lt;code inline=""&gt;packages.config&lt;/code&gt; to &lt;code inline=""&gt;&amp;lt;PackageReference&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Replacing &lt;code inline=""&gt;web.config&lt;/code&gt; with &lt;code inline=""&gt;appsettings.json&lt;/code&gt; (for ASP.NET)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Notifying me of deprecated APIs&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Updating project references&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;&lt;strong&gt;Step 3: Handling the Unexpected&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Of course, some projects didn’t upgrade cleanly:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;A few third-party NuGet packages weren’t compatible with .NET 8.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;WCF references required rewrites or moving to &lt;strong&gt;gRPC or REST&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Some &lt;code inline=""&gt;AppDomain&lt;/code&gt; and &lt;code inline=""&gt;Remoting&lt;/code&gt; APIs had no direct equivalent.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For each issue, the Upgrade Assistant &lt;strong&gt;flagged the problem&lt;/strong&gt; and &lt;strong&gt;left comments&lt;/strong&gt; in the code or console to guide manual intervention.&lt;/p&gt;
&lt;p&gt;I also leaned on these helpful docs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&#128279; &lt;a href="https://learn.microsoft.com/en-us/dotnet/core/compatibility/"&gt;API Compatibility and Breaking Changes&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&#128279; &lt;a href="https://learn.microsoft.com/en-us/dotnet/upgrade-assistant/overview#supported-project-types"&gt;Supported Project Types&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;&lt;strong&gt;Step 4: Testing &amp;amp; Tuning&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;After upgrading:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;I ran all &lt;strong&gt;unit and integration tests&lt;/strong&gt; (yes, we had a decent suite!)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Manually tested critical app paths&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Removed obsolete dependencies&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Modernized logging to use &lt;strong&gt;Microsoft.Extensions.Logging&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Replaced Web API methods with &lt;strong&gt;Minimal APIs&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;✅ Benefits I Saw Firsthand&lt;/h2&gt;
&lt;p&gt;Using the Upgrade Assistant saved me &lt;strong&gt;weeks&lt;/strong&gt; of effort and helped me maintain confidence throughout the process.&lt;/p&gt;
&lt;p&gt;Here’s what I gained:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Benefit&lt;/th&gt;
&lt;th&gt;Impact&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;⚙️ Incremental Upgrades&lt;/td&gt;
&lt;td&gt;Focused on one project at a time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⏱️ Time Savings&lt;/td&gt;
&lt;td&gt;Automated 60–70% of migration work&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&#129504; Developer Awareness&lt;/td&gt;
&lt;td&gt;Better understanding of what changed in modern .NET&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&#128274; Security&lt;/td&gt;
&lt;td&gt;Moved away from unsupported frameworks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;☁️ Cloud-Ready&lt;/td&gt;
&lt;td&gt;Easy to deploy via Docker + Azure App Service&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;&#129517; My Advice for You&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Take a backup&lt;/strong&gt; (or commit everything before you start)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use &lt;code inline=""&gt;upgrade-assistant analyze&lt;/code&gt; to scan your solution beforehand&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Upgrade &lt;strong&gt;class libraries first&lt;/strong&gt;, then consumers like web apps&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Expect &lt;strong&gt;manual tweaks&lt;/strong&gt;—this tool gets you 80% there&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Don't forget to update your &lt;strong&gt;DevOps pipeline&lt;/strong&gt;, if applicable&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;&#129525; Conclusion&lt;/h2&gt;
&lt;p&gt;Migrating a large legacy .NET Framework solution to .NET 8 might seem overwhelming—but it doesn't have to be a full rewrite or a leap into the unknown. With the &lt;strong&gt;.NET Upgrade Assistant&lt;/strong&gt;, I found a structured, guided path that made the journey manageable and insightful.&lt;/p&gt;
&lt;p&gt;It won’t magically fix every line of code, but it will &lt;strong&gt;illuminate the path&lt;/strong&gt;, project by project, and help you bring your software into the modern .NET era.&lt;/p&gt;
&lt;p&gt;If you're holding off on your upgrade—&lt;strong&gt;this is your sign&lt;/strong&gt; to get started.&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;&#129520; Helpful Links&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&#128295; &lt;a href="https://github.com/dotnet/upgrade-assistant"&gt;Upgrade Assistant GitHub Repo&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&#128214; &lt;a href="https://learn.microsoft.com/en-us/dotnet/upgrade-assistant/"&gt;Full Documentation&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&#128269; &lt;a href="https://learn.microsoft.com/en-us/dotnet/standard/analyzers/portability-analyzer"&gt;.NET API Analyzer&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description><link>http://skonakanchi.blogspot.com/2025/05/how-i-modernized-8-year-old-net.html</link><author>noreply@blogger.com (Srinivasa Konakanchi)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1278002805699073381.post-4373019450160204046</guid><pubDate>Thu, 24 Apr 2025 19:11:00 +0000</pubDate><atom:updated>2025-04-24T15:11:45.816-04:00</atom:updated><title>.NET 8 vs .NET 9: Which One Should You Choose in 2025</title><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;h1 class="" data-end="297" data-start="238"&gt;.NET 8 vs .NET 9: Which One Should You Choose in 2025?&lt;/h1&gt;
&lt;p class="" data-end="541" data-start="299"&gt;As we move deeper into 2025, many developers and architects are evaluating whether to adopt &lt;strong data-end="401" data-start="391"&gt;.NET 8&lt;/strong&gt; or make the leap to &lt;strong data-end="432" data-start="422"&gt;.NET 9&lt;/strong&gt;. With both versions available—and each offering distinct advantages—the choice isn’t always straightforward.&lt;/p&gt;
&lt;p class="" data-end="698" data-start="543"&gt;This post breaks down the key differences between .NET 8 and .NET 9, outlines when to use each, and provides recommendations based on real-world scenarios.&lt;/p&gt;
&lt;hr class="" data-end="703" data-start="700" /&gt;
&lt;h2 class="" data-end="732" data-start="705"&gt;&#128204; Support and Stability&lt;/h2&gt;
&lt;p class="" data-end="820" data-start="734"&gt;Let’s start with what matters most for enterprise applications: &lt;strong data-end="819" data-start="798"&gt;support lifecycle&lt;/strong&gt;.&lt;/p&gt;
&lt;ul data-end="1203" data-start="822"&gt;
&lt;li class="" data-end="1012" data-start="822"&gt;
&lt;p class="" data-end="910" data-start="824"&gt;&lt;strong data-end="908" data-start="824"&gt;&lt;a class="" data-end="906" data-start="826" href="https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-8" rel="noopener" target="_new"&gt;.NET 8 (LTS)&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul data-end="1012" data-start="913"&gt;
&lt;li class="" data-end="964" data-start="913"&gt;
&lt;p class="" data-end="964" data-start="915"&gt;Long-Term Support (LTS) until &lt;strong data-end="962" data-start="945"&gt;November 2026&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class="" data-end="1012" data-start="967"&gt;
&lt;p class="" data-end="1012" data-start="969"&gt;Ideal for stable, long-running applications&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="" data-end="1203" data-start="1014"&gt;
&lt;p class="" data-end="1103" data-start="1016"&gt;&lt;strong data-end="1101" data-start="1016"&gt;&lt;a class="" data-end="1099" data-start="1018" href="https://github.com/dotnet/core/blob/main/release-notes/9.0/9.0.md" rel="noopener" target="_new"&gt;.NET 9 (STS)&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul data-end="1203" data-start="1106"&gt;
&lt;li class="" data-end="1156" data-start="1106"&gt;
&lt;p class="" data-end="1156" data-start="1108"&gt;Standard-Term Support (STS) until &lt;strong data-end="1154" data-start="1142"&gt;May 2026&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class="" data-end="1203" data-start="1159"&gt;
&lt;p class="" data-end="1203" data-start="1161"&gt;For fast-paced, innovation-driven projects&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="" data-end="1352" data-start="1205"&gt;✅ Choose &lt;strong data-end="1224" data-start="1214"&gt;.NET 8&lt;/strong&gt; if you need long-term reliability.&lt;br data-end="1262" data-start="1259" /&gt;
⚠️ Opt for &lt;strong data-end="1283" data-start="1273"&gt;.NET 9&lt;/strong&gt; if you're exploring cutting-edge features and can upgrade regularly.&lt;/p&gt;
&lt;hr class="" data-end="1357" data-start="1354" /&gt;
&lt;h2 class="" data-end="1394" data-start="1359"&gt;&#128640; Performance and Optimizations&lt;/h2&gt;
&lt;p class="" data-end="1503" data-start="1396"&gt;.NET 9 introduces hundreds of improvements, especially for runtime performance and deployment optimization:&lt;/p&gt;
&lt;ul data-end="1735" data-start="1505"&gt;
&lt;li class="" data-end="1610" data-start="1505"&gt;
&lt;p class="" data-end="1610" data-start="1507"&gt;&lt;a class="" data-end="1610" data-start="1507" href="https://devblogs.microsoft.com/dotnet/performance_improvements_in_net_8/" rel="noopener" target="_new"&gt;.NET 8 Performance Overview&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class="" data-end="1735" data-start="1611"&gt;
&lt;p class="" data-end="1735" data-start="1613"&gt;&lt;a class="" data-end="1735" data-start="1613" href="https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-9-preview-1/" rel="noopener" target="_new"&gt;.NET 9 Performance Updates (Preview)&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="" data-end="1764" data-start="1737"&gt;Notable upgrades in .NET 9:&lt;/p&gt;
&lt;ul data-end="1934" data-start="1765"&gt;
&lt;li class="" data-end="1817" data-start="1765"&gt;
&lt;p class="" data-end="1817" data-start="1767"&gt;Better &lt;strong data-end="1795" data-start="1774"&gt;JIT optimizations&lt;/strong&gt; and &lt;strong data-end="1817" data-start="1800"&gt;vectorization&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class="" data-end="1876" data-start="1818"&gt;
&lt;p class="" data-end="1876" data-start="1820"&gt;Reduced memory footprint via &lt;strong data-end="1876" data-start="1849"&gt;Native AOT and trimming&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class="" data-end="1934" data-start="1877"&gt;
&lt;p class="" data-end="1934" data-start="1879"&gt;Performance wins in &lt;strong data-end="1917" data-start="1899"&gt;JSON, LINQ, GC&lt;/strong&gt;, and &lt;strong data-end="1934" data-start="1923"&gt;interop&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="" data-end="2044" data-start="1936"&gt;&#127942; If performance is your top priority—especially for ML, gaming, or high-load services—.NET 9 will impress.&lt;/p&gt;
&lt;hr class="" data-end="2049" data-start="2046" /&gt;
&lt;h2 class="" data-end="2094" data-start="2051"&gt;&#129520; New Features and Developer Experience&lt;/h2&gt;
&lt;p class="" data-end="2145" data-start="2096"&gt;Here’s what’s new from a developer’s perspective:&lt;/p&gt;
&lt;h3 class="" data-end="2157" data-start="2147"&gt;.NET 8&lt;/h3&gt;
&lt;ul data-end="2440" data-start="2158"&gt;
&lt;li class="" data-end="2254" data-start="2158"&gt;
&lt;p class="" data-end="2254" data-start="2160"&gt;&#128230; &lt;a class="" data-end="2254" data-start="2163" href="https://devblogs.microsoft.com/dotnet/introducing-dotnet-aspire/" rel="noopener" target="_new"&gt;Introducing .NET Aspire&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class="" data-end="2349" data-start="2255"&gt;
&lt;p class="" data-end="2349" data-start="2257"&gt;✨ &lt;a class="" data-end="2349" data-start="2259" href="https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-12" rel="noopener" target="_new"&gt;What’s New in C# 12&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class="" data-end="2440" data-start="2350"&gt;
&lt;p class="" data-end="2440" data-start="2352"&gt;&#127760; &lt;a class="" data-end="2440" data-start="2355" href="https://devblogs.microsoft.com/dotnet/announcing-dotnet-8/" rel="noopener" target="_new"&gt;Blazor and MAUI updates&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="" data-end="2462" data-start="2442"&gt;.NET 9 (Preview)&lt;/h3&gt;
&lt;ul data-end="2793" data-start="2463"&gt;
&lt;li class="" data-end="2549" data-start="2463"&gt;
&lt;p class="" data-end="2549" data-start="2465"&gt;⚙️ &lt;a class="" data-end="2549" data-start="2468" href="https://github.com/dotnet/runtime/issues/95819" rel="noopener" target="_new"&gt;Feature switches via attributes&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class="" data-end="2690" data-start="2550"&gt;
&lt;p class="" data-end="2690" data-start="2552"&gt;&#128272; &lt;a class="" data-end="2690" data-start="2555" href="https://github.com/dotnet/runtime/issues?q=is%3Aissue+label%3Aarea-System.Security+is%3Aclosed" rel="noopener" target="_new"&gt;Cryptography and runtime enhancements&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class="" data-end="2793" data-start="2691"&gt;
&lt;p class="" data-end="2793" data-start="2693"&gt;&#128269; &lt;a class="" data-end="2793" data-start="2696" href="https://devblogs.microsoft.com/dotnet/announcing-dotnet-9-preview-1/" rel="noopener" target="_new"&gt;.NET 9 preview highlights&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="" data-end="2892" data-start="2795"&gt;&#128161; .NET 9 is ideal for early adopters and those who want to shape the future of .NET development.&lt;/p&gt;
&lt;hr class="" data-end="2897" data-start="2894" /&gt;
&lt;h2 class="" data-end="2927" data-start="2899"&gt;&#128202; Quick Comparison Table&lt;/h2&gt;
&lt;div class="group pointer-events-none relative flex justify-center *:pointer-events-auto"&gt;&lt;span class="pointer-events-none absolute start-full top-4 z-10 hidden h-full w-fit ps-2 md:block" data-state="closed"&gt;&lt;button class="hover:bg-token-main-surface-secondary text-token-text-secondary pointer-events-auto rounded-lg px-1 py-1 opacity-0 transition-opacity duration-200 group-focus-within:opacity-100 group-hover:opacity-100"&gt;&lt;svg class="icon-md-heavy" fill="none" height="24" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path clip-rule="evenodd" d="M7 5C7 3.34315 8.34315 2 10 2H19C20.6569 2 22 3.34315 22 5V14C22 15.6569 20.6569 17 19 17H17V19C17 20.6569 15.6569 22 14 22H5C3.34315 22 2 20.6569 2 19V10C2 8.34315 3.34315 7 5 7H7V5ZM9 7H14C15.6569 7 17 8.34315 17 10V15H19C19.5523 15 20 14.5523 20 14V5C20 4.44772 19.5523 4 19 4H10C9.44772 4 9 4.44772 9 5V7ZM5 9C4.44772 9 4 9.44772 4 10V19C4 19.5523 4.44772 20 5 20H14C14.5523 20 15 19.5523 15 19V10C15 9.44772 14.5523 9 14 9H5Z" fill-rule="evenodd" fill="currentColor"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/span&gt;&lt;div class="tableContainer horzScrollShadows relative"&gt;&lt;table class="min-w-full" data-end="3732" data-start="2929"&gt;&lt;thead data-end="3029" data-start="2929"&gt;&lt;tr data-end="3029" data-start="2929"&gt;&lt;th data-end="2956" data-start="2929"&gt;Feature&lt;/th&gt;&lt;th data-end="2992" data-start="2956"&gt;.NET 8 (LTS)&lt;/th&gt;&lt;th data-end="3029" data-start="2992"&gt;.NET 9 (STS)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody data-end="3732" data-start="3131"&gt;&lt;tr data-end="3231" data-start="3131"&gt;&lt;td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="3158" data-start="3131"&gt;Support Lifecycle&lt;/td&gt;&lt;td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="3194" data-start="3158"&gt;Nov 2026&lt;/td&gt;&lt;td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="3231" data-start="3194"&gt;May 2026&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end="3332" data-start="3232"&gt;&lt;td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="3259" data-start="3232"&gt;Stability&lt;/td&gt;&lt;td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="3295" data-start="3259"&gt;✅ High&lt;/td&gt;&lt;td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="3332" data-start="3295"&gt;⚠️ Moderate&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end="3432" data-start="3333"&gt;&lt;td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="3360" data-start="3333"&gt;Performance&lt;/td&gt;&lt;td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="3396" data-start="3360"&gt;⚡ Fast&lt;/td&gt;&lt;td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="3432" data-start="3396"&gt;⚡⚡ Faster (esp. trimming &amp;amp; JIT)&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end="3531" data-start="3433"&gt;&lt;td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="3460" data-start="3433"&gt;Cloud-native (Aspire)&lt;/td&gt;&lt;td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="3495" data-start="3460"&gt;✅ Supported&lt;/td&gt;&lt;td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="3531" data-start="3495"&gt;✅ Evolving&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end="3631" data-start="3532"&gt;&lt;td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="3559" data-start="3532"&gt;Use Case Fit&lt;/td&gt;&lt;td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="3595" data-start="3559"&gt;Long-term core apps&lt;/td&gt;&lt;td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="3631" data-start="3595"&gt;High-performance, fast iteration&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end="3732" data-start="3632"&gt;&lt;td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="3659" data-start="3632"&gt;Upgrade Frequency&lt;/td&gt;&lt;td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="3695" data-start="3659"&gt;Every 2–3 years&lt;/td&gt;&lt;td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="3732" data-start="3695"&gt;Every 12 months&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr class="" data-end="3737" data-start="3734" /&gt;
&lt;h2 class="" data-end="3758" data-start="3739"&gt;✅ Recommendation&lt;/h2&gt;
&lt;p class="" data-end="3785" data-start="3760"&gt;Use this decision matrix:&lt;/p&gt;
&lt;ul data-end="4130" data-start="3787"&gt;
&lt;li class="" data-end="3966" data-start="3787"&gt;
&lt;p class="" data-end="3807" data-start="3789"&gt;&lt;strong data-end="3803" data-start="3789"&gt;Use .NET 8&lt;/strong&gt; if:&lt;/p&gt;
&lt;ul data-end="3966" data-start="3810"&gt;
&lt;li class="" data-end="3862" data-start="3810"&gt;
&lt;p class="" data-end="3862" data-start="3812"&gt;You want a stable platform with long-term support.&lt;/p&gt;
&lt;/li&gt;
&lt;li class="" data-end="3915" data-start="3865"&gt;
&lt;p class="" data-end="3915" data-start="3867"&gt;Your app is customer-facing or high-reliability.&lt;/p&gt;
&lt;/li&gt;
&lt;li class="" data-end="3966" data-start="3918"&gt;
&lt;p class="" data-end="3966" data-start="3920"&gt;You’re adopting .NET Aspire for microservices.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="" data-end="4130" data-start="3968"&gt;
&lt;p class="" data-end="3988" data-start="3970"&gt;&lt;strong data-end="3984" data-start="3970"&gt;Use .NET 9&lt;/strong&gt; if:&lt;/p&gt;
&lt;ul data-end="4130" data-start="3991"&gt;
&lt;li class="" data-end="4028" data-start="3991"&gt;
&lt;p class="" data-end="4028" data-start="3993"&gt;You need bleeding-edge performance.&lt;/p&gt;
&lt;/li&gt;
&lt;li class="" data-end="4082" data-start="4031"&gt;
&lt;p class="" data-end="4082" data-start="4033"&gt;You’re building for ML, AI, gaming, or analytics.&lt;/p&gt;
&lt;/li&gt;
&lt;li class="" data-end="4130" data-start="4085"&gt;
&lt;p class="" data-end="4130" data-start="4087"&gt;You can handle yearly upgrades and testing.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="" data-end="4244" data-start="4132"&gt;Both support side-by-side deployments—so you don’t have to choose globally. Mix and match based on service type.&lt;/p&gt;
&lt;hr class="" data-end="4249" data-start="4246" /&gt;
&lt;h2 class="" data-end="4271" data-start="4251"&gt;&#129504; Final Thoughts&lt;/h2&gt;
&lt;p class="" data-end="4420" data-start="4273"&gt;.NET 8 provides the foundation for building large, reliable systems.&lt;br data-end="4344" data-start="4341" /&gt;
.NET 9 pushes boundaries with performance and modern development techniques.&lt;/p&gt;
&lt;p class="" data-end="4578" data-start="4422"&gt;Before upgrading, always consult the &lt;a class="" data-end="4554" data-start="4459" href="https://dotnet.microsoft.com/en-us/platform/support/policy/dotnet-core" rel="noopener" target="_new"&gt;.NET release schedule&lt;/a&gt; to plan your lifecycle.&lt;/p&gt;</description><link>http://skonakanchi.blogspot.com/2025/04/net-8-vs-net-9-which-one-should-you.html</link><author>noreply@blogger.com (Srinivasa Konakanchi)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1278002805699073381.post-5778575433679658781</guid><pubDate>Wed, 16 Apr 2025 02:33:00 +0000</pubDate><atom:updated>2026-03-12T20:37:41.684-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.NET</category><title>Introducing .NET 9 – Smarter, Faster, and Built for the Future</title><description>&lt;p data-end="521" data-start="202"&gt;Over the past few weeks, I’ve made it a point to stay more up to date with the latest developments in the .NET ecosystem. As someone who’s been working with .NET for years, I realized that keeping pace with each new release is not only exciting but essential—especially with how fast Microsoft is evolving the platform.&lt;/p&gt;&lt;p data-end="826" data-start="523"&gt;So, I dove into the newest release: &lt;strong data-end="569" data-start="559"&gt;.NET 9&lt;/strong&gt;. And wow—this update brings some major improvements across cloud-native development, performance, and cross-platform UI frameworks like MAUI. Whether you're building modern web apps, services, or desktop/mobile apps, .NET 9 has something powerful to offer.&lt;/p&gt;&lt;p&gt;

&lt;/p&gt;&lt;p data-end="973" data-start="828"&gt;In this post, I’m summarizing some of the key highlights I found most exciting and useful. Hopefully, this helps you get up to speed quickly too&lt;/p&gt;
&lt;h2 data-end="780" data-start="753"&gt;What's New in .NET 9?&lt;/h2&gt;
&lt;h3 data-end="812" data-start="782"&gt;&#128295; Cloud-Native by Default&lt;/h3&gt;
&lt;p data-end="905" data-start="814"&gt;.NET 9 doubles down on container-first, cloud-native development. Key improvements include:&lt;/p&gt;
&lt;ul data-end="1689" data-start="907"&gt;
&lt;li data-end="1073" data-start="907"&gt;
&lt;p data-end="1073" data-start="909"&gt;&lt;strong data-end="937" data-start="909"&gt;Smaller container images&lt;/strong&gt;: New base images reduce size by up to 30%.&lt;br data-end="983" data-start="980" /&gt;
&#128279; &lt;a data-end="1073" data-start="988" href="https://learn.microsoft.com/en-us/dotnet/core/docker/" rel="noopener" target="_new"&gt;Official .NET Container Docs&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end="1273" data-start="1075"&gt;
&lt;p data-end="1273" data-start="1077"&gt;&lt;strong data-end="1119" data-start="1077"&gt;Native AOT (Ahead-of-Time Compilation)&lt;/strong&gt;: More mature, faster startup, and reduced memory usage.&lt;br data-end="1178" data-start="1175" /&gt;
&#128279; &lt;a data-end="1273" data-start="1183" href="https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot/" rel="noopener" target="_new"&gt;Native AOT Overview&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end="1514" data-start="1275"&gt;
&lt;p data-end="1514" data-start="1277"&gt;&lt;strong data-end="1311" data-start="1277"&gt;Built-in OpenTelemetry support&lt;/strong&gt;: Easier tracing, metrics, and logging in distributed systems.&lt;br data-end="1376" data-start="1373" /&gt;
&#128279; &lt;a data-end="1514" data-start="1381" href="https://learn.microsoft.com/en-us/dotnet/core/diagnostics/distributed-tracing-opentelemetry" rel="noopener" target="_new"&gt;Distributed Tracing with OpenTelemetry&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end="1689" data-start="1516"&gt;
&lt;p data-end="1689" data-start="1518"&gt;&lt;strong data-end="1576" data-start="1518"&gt;Improved support for Kubernetes and Azure App Services&lt;/strong&gt;.&lt;br data-end="1580" data-start="1577" /&gt;
&#128279; &lt;a data-end="1689" data-start="1585" href="https://learn.microsoft.com/en-us/azure/app-service/quickstart-dotnetcore" rel="noopener" target="_new"&gt;Deploy to Azure App Service&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h3 data-end="1736" data-start="1696"&gt;⚡ Performance: .NET Gets Even Faster&lt;/h3&gt;
&lt;p data-end="1811" data-start="1738"&gt;.NET has always prioritized performance, and .NET 9 continues this trend:&lt;/p&gt;
&lt;ul data-end="2406" data-start="1813"&gt;
&lt;li data-end="1965" data-start="1813"&gt;
&lt;p data-end="1965" data-start="1815"&gt;Optimized JIT and GC improvements.&lt;br data-end="1852" data-start="1849" /&gt;
&#128279; &lt;a data-end="1965" data-start="1857" href="https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-9/" rel="noopener" target="_new"&gt;Performance Improvements in .NET&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end="2120" data-start="1967"&gt;
&lt;p data-end="2120" data-start="1969"&gt;Faster minimal APIs and lower memory footprint.&lt;br data-end="2019" data-start="2016" /&gt;
&#128279; &lt;a data-end="2120" data-start="2024" href="https://learn.microsoft.com/en-us/aspnet/core/fundamentals/minimal-apis" rel="noopener" target="_new"&gt;Minimal APIs Overview&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end="2258" data-start="2122"&gt;
&lt;p data-end="2258" data-start="2124"&gt;Blazing fast HTTP/3 support in ASP.NET Core.&lt;br data-end="2171" data-start="2168" /&gt;
&#128279; &lt;a data-end="2258" data-start="2176" href="https://learn.microsoft.com/en-us/aspnet/core/fundamentals/http3" rel="noopener" target="_new"&gt;HTTP/3 Support&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end="2406" data-start="2260"&gt;
&lt;p data-end="2406" data-start="2262"&gt;Smarter code trimming and tree-shaking in AOT apps.&lt;br data-end="2316" data-start="2313" /&gt;
&#128279; &lt;a data-end="2406" data-start="2321" href="https://learn.microsoft.com/en-us/dotnet/core/deploying/trimming/" rel="noopener" target="_new"&gt;Trimming in .NET&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h3 data-end="2455" data-start="2413"&gt;&#129521; ASP.NET Core: The Web Stack Evolves&lt;/h3&gt;
&lt;p data-end="2522" data-start="2457"&gt;ASP.NET Core in .NET 9 brings several developer-friendly updates:&lt;/p&gt;
&lt;ul data-end="3219" data-start="2524"&gt;
&lt;li data-end="2709" data-start="2524"&gt;
&lt;p data-end="2709" data-start="2526"&gt;&lt;strong data-end="2557" data-start="2526"&gt;Blazor unification complete&lt;/strong&gt;: You can now mix server-side and WebAssembly rendering seamlessly.&lt;br data-end="2627" data-start="2624" /&gt;
&#128279; &lt;a data-end="2709" data-start="2632" href="https://learn.microsoft.com/en-us/aspnet/core/blazor/" rel="noopener" target="_new"&gt;Blazor Documentation&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end="2861" data-start="2711"&gt;
&lt;p data-end="2861" data-start="2713"&gt;&lt;strong data-end="2736" data-start="2713"&gt;SignalR over HTTP/3&lt;/strong&gt;: Better real-time experiences.&lt;br data-end="2770" data-start="2767" /&gt;
&#128279; &lt;a data-end="2861" data-start="2775" href="https://learn.microsoft.com/en-us/aspnet/core/signalr/introduction" rel="noopener" target="_new"&gt;SignalR Overview&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end="3035" data-start="2863"&gt;
&lt;p data-end="3035" data-start="2865"&gt;&lt;strong data-end="2897" data-start="2865"&gt;Enhanced middleware pipeline&lt;/strong&gt; with performance-first patterns.&lt;br data-end="2933" data-start="2930" /&gt;
&#128279; &lt;a data-end="3035" data-start="2938" href="https://learn.microsoft.com/en-us/aspnet/core/fundamentals/middleware/" rel="noopener" target="_new"&gt;ASP.NET Core Middleware&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end="3219" data-start="3037"&gt;
&lt;p data-end="3219" data-start="3039"&gt;&lt;strong data-end="3083" data-start="3039"&gt;Built-in endpoint filters and validation&lt;/strong&gt;: Cleaner code, better DX.&lt;br data-end="3112" data-start="3109" /&gt;
&#128279; &lt;a data-end="3219" data-start="3117" href="https://learn.microsoft.com/en-us/aspnet/core/fundamentals/minimal-apis#filters" rel="noopener" target="_new"&gt;Minimal API Filters&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h3 data-end="3251" data-start="3226"&gt;&#128421;️ .NET MAUI Matures&lt;/h3&gt;
&lt;p data-end="3312" data-start="3253"&gt;.NET 9 continues to polish the cross-platform UI framework:&lt;/p&gt;
&lt;ul data-end="3591" data-start="3314"&gt;
&lt;li data-end="3386" data-start="3314"&gt;
&lt;p data-end="3386" data-start="3316"&gt;More stable and responsive UI across iOS, Android, macOS, and Windows.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end="3451" data-start="3387"&gt;
&lt;p data-end="3451" data-start="3389"&gt;Improved Hot Reload and Live Preview support in Visual Studio.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end="3591" data-start="3452"&gt;
&lt;p data-end="3591" data-start="3454"&gt;Simplified lifecycle management and background tasks.&lt;br data-end="3510" data-start="3507" /&gt;
&#128279; &lt;a data-end="3591" data-start="3515" href="https://learn.microsoft.com/en-us/dotnet/maui/" rel="noopener" target="_new"&gt;Get Started with .NET MAUI&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h3 data-end="3643" data-start="3598"&gt;&#129514; Better Testing, Observability &amp;amp; DevOps&lt;/h3&gt;
&lt;ul data-end="4171" data-start="3645"&gt;
&lt;li data-end="3859" data-start="3645"&gt;
&lt;p data-end="3859" data-start="3647"&gt;&lt;strong data-end="3687" data-start="3647"&gt;Improved support for test containers&lt;/strong&gt;: Run integration tests against ephemeral containers.&lt;br data-end="3743" data-start="3740" /&gt;
&#128279; &lt;a data-end="3859" data-start="3748" href="https://learn.microsoft.com/en-us/dotnet/core/testing/unit-testing-with-dotnet-test" rel="noopener" target="_new"&gt;.NET Test Container Docs&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end="4009" data-start="3861"&gt;
&lt;p data-end="4009" data-start="3863"&gt;&lt;strong data-end="3883" data-start="3863"&gt;&lt;code data-end="3881" data-start="3865"&gt;dotnet monitor&lt;/code&gt;&lt;/strong&gt; now comes with auto-discovery and UI enhancements.&lt;br data-end="3937" data-start="3934" /&gt;
&#128279; &lt;a data-end="4009" data-start="3942" href="https://learn.microsoft.com/en-us/dotnet/monitor/" rel="noopener" target="_new"&gt;dotnet monitor&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end="4171" data-start="4011"&gt;
&lt;p data-end="4171" data-start="4013"&gt;Better profiling and diagnostics support in Visual Studio and CLI.&lt;br data-end="4082" data-start="4079" /&gt;
&#128279; &lt;a data-end="4171" data-start="4087" href="https://learn.microsoft.com/en-us/dotnet/core/diagnostics/" rel="noopener" target="_new"&gt;.NET Diagnostics Tool&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h3 data-end="4213" data-start="4178"&gt;&#128161; C# 13: Smarter, Cleaner Code&lt;/h3&gt;
&lt;p data-end="4253" data-start="4215"&gt;.NET 9 ships with &lt;strong data-end="4242" data-start="4233"&gt;C# 13&lt;/strong&gt;, bringing:&lt;/p&gt;
&lt;ul data-end="4491" data-start="4255"&gt;
&lt;li data-end="4294" data-start="4255"&gt;
&lt;p data-end="4294" data-start="4257"&gt;&lt;strong data-end="4284" data-start="4257"&gt;Parameter null checking&lt;/strong&gt; with &lt;code data-end="4294" data-start="4290"&gt;!!&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end="4326" data-start="4295"&gt;
&lt;p data-end="4326" data-start="4297"&gt;&lt;strong data-end="4326" data-start="4297"&gt;Default lambda parameters&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end="4352" data-start="4327"&gt;
&lt;p data-end="4352" data-start="4329"&gt;&lt;strong data-end="4352" data-start="4329"&gt;Collection literals&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end="4491" data-start="4353"&gt;
&lt;p data-end="4491" data-start="4355"&gt;&lt;strong data-end="4393" data-start="4355"&gt;Primary constructors for all types&lt;/strong&gt;&lt;br data-end="4396" data-start="4393" /&gt;
&#128279; &lt;a data-end="4491" data-start="4401" href="https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-13" rel="noopener" target="_new"&gt;What's New in C# 13&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end="4575" data-start="4493"&gt;These features reduce boilerplate and make your code more readable and expressive.&lt;/p&gt;
&lt;h2 data-end="4608" data-start="4582"&gt;Tooling &amp;amp; Ecosystem&lt;/h2&gt;
&lt;ul data-end="5090" data-start="4610"&gt;
&lt;li data-end="4790" data-start="4610"&gt;
&lt;p data-end="4790" data-start="4612"&gt;&lt;strong data-end="4634" data-start="4612"&gt;Visual Studio 2025&lt;/strong&gt; brings tighter integration with .NET 9, from Hot Reload to AI-assisted code fixes.&lt;br data-end="4720" data-start="4717" /&gt;
&#128279; &lt;a data-end="4790" data-start="4725" href="https://visualstudio.microsoft.com/" rel="noopener" target="_new"&gt;Visual Studio 2025 Preview&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end="4962" data-start="4792"&gt;
&lt;p data-end="4962" data-start="4794"&gt;Improved support in JetBrains Rider and VS Code extensions.&lt;br data-end="4856" data-start="4853" /&gt;
&#128279; &lt;a data-end="4962" data-start="4861" href="https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csdevkit" rel="noopener" target="_new"&gt;C# Dev Kit for VS Code&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end="5090" data-start="4964"&gt;
&lt;p data-end="5090" data-start="4966"&gt;Updated NuGet performance and improved restore speed.&lt;br data-end="5022" data-start="5019" /&gt;
&#128279; &lt;a data-end="5090" data-start="5027" href="https://learn.microsoft.com/en-us/nuget/" rel="noopener" target="_new"&gt;NuGet Documentation&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h2 data-end="5117" data-start="5097"&gt;&amp;nbsp;Final Thoughts&lt;/h2&gt;
&lt;p data-end="5350" data-start="5119"&gt;.NET 9 isn’t just an update—it’s a refinement of a developer-first, cloud-ready, performance-oriented ecosystem. Microsoft has listened to the community and delivered a platform that’s ready for the next generation of applications.&lt;/p&gt;
&lt;p data-end="5502" data-start="5352"&gt;Whether you're a backend engineer, cloud architect, or full-stack developer, .NET 9 will save you time, reduce complexity, and future-proof your apps.&lt;/p&gt;
&lt;p data-end="5691" data-start="5504"&gt;&#127919; Ready to dive in?&lt;br data-end="5527" data-start="5524" /&gt;
&#128073; &lt;a data-end="5592" data-start="5530" href="https://dotnet.microsoft.com/en-us/download" rel="noopener" target="_new"&gt;Download .NET 9&lt;/a&gt;&lt;br data-end="5595" data-start="5592" /&gt;
&#128073; Try the new templates: &lt;code data-end="5633" data-start="5621"&gt;dotnet new&lt;/code&gt;&lt;br data-end="5636" data-start="5633" /&gt;
&#128073; Upgrade your existing projects with &lt;code data-end="5691" data-start="5675"&gt;dotnet upgrade&lt;/code&gt;&lt;/p&gt;</description><link>http://skonakanchi.blogspot.com/2025/04/introducing-net-9-smarter-faster-and.html</link><author>noreply@blogger.com (Srinivasa Konakanchi)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1278002805699073381.post-3719498830575815381</guid><pubDate>Mon, 10 Feb 2025 02:58:00 +0000</pubDate><atom:updated>2025-02-09T21:58:28.269-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.NET</category><title>Mastering Parallel Processing in .NET: Unlocking Performance with Parallel.ForEach</title><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;h1&gt;&lt;br /&gt;&lt;/h1&gt;&lt;p&gt;In today’s high-performance applications, processing large datasets efficiently is crucial. Traditional sequential loops can become a bottleneck, especially when dealing with CPU-bound operations. This is where &lt;code&gt;.NET&lt;/code&gt;'s &lt;code&gt;Parallel.ForEach&lt;/code&gt; comes into play, offering a powerful way to execute loops concurrently and significantly reduce execution time.&lt;/p&gt;&lt;p&gt;In this article, we’ll explore how to use &lt;code&gt;Parallel.ForEach&lt;/code&gt;, its advantages, potential pitfalls, and best practices.&lt;/p&gt;&lt;hr /&gt;&lt;h2&gt;&lt;strong&gt;Understanding &lt;code&gt;Parallel.ForEach&lt;/code&gt;&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;The &lt;code&gt;Parallel.ForEach&lt;/code&gt; method in &lt;code&gt;.NET&lt;/code&gt; enables parallel execution of loop iterations using multiple threads from the &lt;code&gt;ThreadPool&lt;/code&gt;. It’s particularly useful for CPU-intensive tasks, such as processing large collections, performing calculations, or handling file operations.&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;Basic Syntax&lt;/strong&gt;&lt;/h3&gt;&lt;pre class="!overflow-visible"&gt;&lt;div class="contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950"&gt;&lt;div class="flex items-center text-token-text-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md h-9 bg-token-sidebar-surface-primary dark:bg-token-main-surface-secondary select-none"&gt;csharp&lt;/div&gt;&lt;div class="sticky top-9 md:top-[5.75rem]"&gt;&lt;div class="absolute bottom-0 right-2 flex h-9 items-center"&gt;&lt;div class="flex items-center rounded bg-token-sidebar-surface-primary px-2 font-sans text-xs text-token-text-secondary dark:bg-token-main-surface-secondary"&gt;&lt;span class="" data-state="closed"&gt;&lt;button aria-label="Copy" class="flex gap-1 items-center select-none px-4 py-1"&gt;&lt;svg class="icon-xs" fill="none" height="24" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path clip-rule="evenodd" d="M7 5C7 3.34315 8.34315 2 10 2H19C20.6569 2 22 3.34315 22 5V14C22 15.6569 20.6569 17 19 17H17V19C17 20.6569 15.6569 22 14 22H5C3.34315 22 2 20.6569 2 19V10C2 8.34315 3.34315 7 5 7H7V5ZM9 7H14C15.6569 7 17 8.34315 17 10V15H19C19.5523 15 20 14.5523 20 14V5C20 4.44772 19.5523 4 19 4H10C9.44772 4 9 4.44772 9 5V7ZM5 9C4.44772 9 4 9.44772 4 10V19C4 19.5523 4.44772 20 5 20H14C14.5523 20 15 19.5523 15 19V10C15 9.44772 14.5523 9 14 9H5Z" fill-rule="evenodd" fill="currentColor"&gt;&lt;/path&gt;&lt;/svg&gt;Copy&lt;/button&gt;&lt;/span&gt;&lt;span class="" data-state="closed"&gt;&lt;button class="flex select-none items-center gap-1"&gt;&lt;svg class="icon-xs" fill="none" height="24" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path d="M2.5 5.5C4.3 5.2 5.2 4 5.5 2.5C5.8 4 6.7 5.2 8.5 5.5C6.7 5.8 5.8 7 5.5 8.5C5.2 7 4.3 5.8 2.5 5.5Z" fill="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor"&gt;&lt;/path&gt;&lt;path d="M5.66282 16.5231L5.18413 19.3952C5.12203 19.7678 5.09098 19.9541 5.14876 20.0888C5.19933 20.2067 5.29328 20.3007 5.41118 20.3512C5.54589 20.409 5.73218 20.378 6.10476 20.3159L8.97693 19.8372C9.72813 19.712 10.1037 19.6494 10.4542 19.521C10.7652 19.407 11.0608 19.2549 11.3343 19.068C11.6425 18.8575 11.9118 18.5882 12.4503 18.0497L20 10.5C21.3807 9.11929 21.3807 6.88071 20 5.5C18.6193 4.11929 16.3807 4.11929 15 5.5L7.45026 13.0497C6.91175 13.5882 6.6425 13.8575 6.43197 14.1657C6.24513 14.4392 6.09299 14.7348 5.97903 15.0458C5.85062 15.3963 5.78802 15.7719 5.66282 16.5231Z" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor"&gt;&lt;/path&gt;&lt;path d="M14.5 7L18.5 11" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor"&gt;&lt;/path&gt;&lt;/svg&gt;Edit&lt;/button&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;code class="!whitespace-pre language-csharp"&gt;Parallel.ForEach(collection, item =&amp;gt;
{
    &lt;span class="hljs-comment"&gt;// Process each item in parallel&lt;/span&gt;
    Console.WriteLine(&lt;span class="hljs-string"&gt;$"Processing &lt;span class="hljs-subst"&gt;{item}&lt;/span&gt; on thread &lt;span class="hljs-subst"&gt;{Thread.CurrentThread.ManagedThreadId}&lt;/span&gt;"&lt;/span&gt;);
});
&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h2&gt;&lt;strong&gt;When to Use &lt;code&gt;Parallel.ForEach&lt;/code&gt;&lt;/strong&gt;&lt;/h2&gt;&lt;h3&gt;✅ &lt;strong&gt;Best Use Cases:&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;✔ &lt;strong&gt;CPU-bound operations&lt;/strong&gt; – Data processing, mathematical computations, or image transformations.&lt;br /&gt;✔ &lt;strong&gt;Processing large collections&lt;/strong&gt; – Handling millions of records efficiently.&lt;br /&gt;✔ &lt;strong&gt;Independent iterations&lt;/strong&gt; – When each loop iteration doesn’t depend on the result of another.&lt;/p&gt;&lt;h3&gt;❌ &lt;strong&gt;When NOT to Use:&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;✖ &lt;strong&gt;I/O-bound operations&lt;/strong&gt; – Parallelizing network or database calls can lead to thread starvation.&lt;br /&gt;✖ &lt;strong&gt;Order-dependent processing&lt;/strong&gt; – If you need strict ordering, consider &lt;code&gt;PLINQ&lt;/code&gt; instead.&lt;br /&gt;✖ &lt;strong&gt;Mutating shared state&lt;/strong&gt; – Risk of race conditions if multiple threads modify the same resource.&lt;/p&gt;&lt;hr /&gt;&lt;h2&gt;&lt;strong&gt;Optimizing Performance with &lt;code&gt;Parallel.ForEach&lt;/code&gt;&lt;/strong&gt;&lt;/h2&gt;&lt;h3&gt;&lt;strong&gt;1. Controlling Parallelism with &lt;code&gt;ParallelOptions&lt;/code&gt;&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;By default, &lt;code&gt;Parallel.ForEach&lt;/code&gt; will try to use all available CPU cores, which might not always be optimal. You can control the degree of parallelism using &lt;code&gt;ParallelOptions&lt;/code&gt;:&lt;/p&gt;&lt;pre class="!overflow-visible"&gt;&lt;div class="contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950"&gt;&lt;div class="flex items-center text-token-text-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md h-9 bg-token-sidebar-surface-primary dark:bg-token-main-surface-secondary select-none"&gt;csharp&lt;/div&gt;&lt;div class="sticky top-9 md:top-[5.75rem]"&gt;&lt;div class="absolute bottom-0 right-2 flex h-9 items-center"&gt;&lt;div class="flex items-center rounded bg-token-sidebar-surface-primary px-2 font-sans text-xs text-token-text-secondary dark:bg-token-main-surface-secondary"&gt;&lt;span class="" data-state="closed"&gt;&lt;button aria-label="Copy" class="flex gap-1 items-center select-none px-4 py-1"&gt;&lt;svg class="icon-xs" fill="none" height="24" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path clip-rule="evenodd" d="M7 5C7 3.34315 8.34315 2 10 2H19C20.6569 2 22 3.34315 22 5V14C22 15.6569 20.6569 17 19 17H17V19C17 20.6569 15.6569 22 14 22H5C3.34315 22 2 20.6569 2 19V10C2 8.34315 3.34315 7 5 7H7V5ZM9 7H14C15.6569 7 17 8.34315 17 10V15H19C19.5523 15 20 14.5523 20 14V5C20 4.44772 19.5523 4 19 4H10C9.44772 4 9 4.44772 9 5V7ZM5 9C4.44772 9 4 9.44772 4 10V19C4 19.5523 4.44772 20 5 20H14C14.5523 20 15 19.5523 15 19V10C15 9.44772 14.5523 9 14 9H5Z" fill-rule="evenodd" fill="currentColor"&gt;&lt;/path&gt;&lt;/svg&gt;Copy&lt;/button&gt;&lt;/span&gt;&lt;span class="" data-state="closed"&gt;&lt;button class="flex select-none items-center gap-1"&gt;&lt;svg class="icon-xs" fill="none" height="24" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path d="M2.5 5.5C4.3 5.2 5.2 4 5.5 2.5C5.8 4 6.7 5.2 8.5 5.5C6.7 5.8 5.8 7 5.5 8.5C5.2 7 4.3 5.8 2.5 5.5Z" fill="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor"&gt;&lt;/path&gt;&lt;path d="M5.66282 16.5231L5.18413 19.3952C5.12203 19.7678 5.09098 19.9541 5.14876 20.0888C5.19933 20.2067 5.29328 20.3007 5.41118 20.3512C5.54589 20.409 5.73218 20.378 6.10476 20.3159L8.97693 19.8372C9.72813 19.712 10.1037 19.6494 10.4542 19.521C10.7652 19.407 11.0608 19.2549 11.3343 19.068C11.6425 18.8575 11.9118 18.5882 12.4503 18.0497L20 10.5C21.3807 9.11929 21.3807 6.88071 20 5.5C18.6193 4.11929 16.3807 4.11929 15 5.5L7.45026 13.0497C6.91175 13.5882 6.6425 13.8575 6.43197 14.1657C6.24513 14.4392 6.09299 14.7348 5.97903 15.0458C5.85062 15.3963 5.78802 15.7719 5.66282 16.5231Z" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor"&gt;&lt;/path&gt;&lt;path d="M14.5 7L18.5 11" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor"&gt;&lt;/path&gt;&lt;/svg&gt;Edit&lt;/button&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;code class="!whitespace-pre language-csharp"&gt;&lt;span class="hljs-keyword"&gt;var&lt;/span&gt; options = &lt;span class="hljs-keyword"&gt;new&lt;/span&gt; ParallelOptions { MaxDegreeOfParallelism = Environment.ProcessorCount / &lt;span class="hljs-number"&gt;2&lt;/span&gt; };

Parallel.ForEach(Enumerable.Range(&lt;span class="hljs-number"&gt;1&lt;/span&gt;, &lt;span class="hljs-number"&gt;100&lt;/span&gt;), options, i =&amp;gt;
{
    Console.WriteLine(&lt;span class="hljs-string"&gt;$"Processing &lt;span class="hljs-subst"&gt;{i}&lt;/span&gt; on thread &lt;span class="hljs-subst"&gt;{Thread.CurrentThread.ManagedThreadId}&lt;/span&gt;"&lt;/span&gt;);
});
&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p&gt;This limits the number of concurrent tasks, preventing CPU overuse.&lt;/p&gt;&lt;hr /&gt;&lt;h3&gt;&lt;strong&gt;2. Handling Exceptions Gracefully&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;When running tasks in parallel, multiple exceptions might occur. Instead of failing at the first error, wrap your logic in a &lt;code&gt;try-catch&lt;/code&gt; and use &lt;code&gt;AggregateException&lt;/code&gt; to handle them properly.&lt;/p&gt;&lt;pre class="!overflow-visible"&gt;&lt;div class="contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950"&gt;&lt;div class="flex items-center text-token-text-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md h-9 bg-token-sidebar-surface-primary dark:bg-token-main-surface-secondary select-none"&gt;csharp&lt;/div&gt;&lt;div class="sticky top-9 md:top-[5.75rem]"&gt;&lt;div class="absolute bottom-0 right-2 flex h-9 items-center"&gt;&lt;div class="flex items-center rounded bg-token-sidebar-surface-primary px-2 font-sans text-xs text-token-text-secondary dark:bg-token-main-surface-secondary"&gt;&lt;span class="" data-state="closed"&gt;&lt;button aria-label="Copy" class="flex gap-1 items-center select-none px-4 py-1"&gt;&lt;svg class="icon-xs" fill="none" height="24" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path clip-rule="evenodd" d="M7 5C7 3.34315 8.34315 2 10 2H19C20.6569 2 22 3.34315 22 5V14C22 15.6569 20.6569 17 19 17H17V19C17 20.6569 15.6569 22 14 22H5C3.34315 22 2 20.6569 2 19V10C2 8.34315 3.34315 7 5 7H7V5ZM9 7H14C15.6569 7 17 8.34315 17 10V15H19C19.5523 15 20 14.5523 20 14V5C20 4.44772 19.5523 4 19 4H10C9.44772 4 9 4.44772 9 5V7ZM5 9C4.44772 9 4 9.44772 4 10V19C4 19.5523 4.44772 20 5 20H14C14.5523 20 15 19.5523 15 19V10C15 9.44772 14.5523 9 14 9H5Z" fill-rule="evenodd" fill="currentColor"&gt;&lt;/path&gt;&lt;/svg&gt;Copy&lt;/button&gt;&lt;/span&gt;&lt;span class="" data-state="closed"&gt;&lt;button class="flex select-none items-center gap-1"&gt;&lt;svg class="icon-xs" fill="none" height="24" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path d="M2.5 5.5C4.3 5.2 5.2 4 5.5 2.5C5.8 4 6.7 5.2 8.5 5.5C6.7 5.8 5.8 7 5.5 8.5C5.2 7 4.3 5.8 2.5 5.5Z" fill="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor"&gt;&lt;/path&gt;&lt;path d="M5.66282 16.5231L5.18413 19.3952C5.12203 19.7678 5.09098 19.9541 5.14876 20.0888C5.19933 20.2067 5.29328 20.3007 5.41118 20.3512C5.54589 20.409 5.73218 20.378 6.10476 20.3159L8.97693 19.8372C9.72813 19.712 10.1037 19.6494 10.4542 19.521C10.7652 19.407 11.0608 19.2549 11.3343 19.068C11.6425 18.8575 11.9118 18.5882 12.4503 18.0497L20 10.5C21.3807 9.11929 21.3807 6.88071 20 5.5C18.6193 4.11929 16.3807 4.11929 15 5.5L7.45026 13.0497C6.91175 13.5882 6.6425 13.8575 6.43197 14.1657C6.24513 14.4392 6.09299 14.7348 5.97903 15.0458C5.85062 15.3963 5.78802 15.7719 5.66282 16.5231Z" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor"&gt;&lt;/path&gt;&lt;path d="M14.5 7L18.5 11" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor"&gt;&lt;/path&gt;&lt;/svg&gt;Edit&lt;/button&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;code class="!whitespace-pre language-csharp"&gt;&lt;span class="hljs-keyword"&gt;try&lt;/span&gt;
{
    Parallel.ForEach(Enumerable.Range(&lt;span class="hljs-number"&gt;1&lt;/span&gt;, &lt;span class="hljs-number"&gt;10&lt;/span&gt;), i =&amp;gt;
    {
        &lt;span class="hljs-keyword"&gt;if&lt;/span&gt; (i == &lt;span class="hljs-number"&gt;5&lt;/span&gt;) &lt;span class="hljs-keyword"&gt;throw&lt;/span&gt; &lt;span class="hljs-keyword"&gt;new&lt;/span&gt; Exception(&lt;span class="hljs-string"&gt;"Error at 5"&lt;/span&gt;);
        Console.WriteLine(&lt;span class="hljs-string"&gt;$"Processing &lt;span class="hljs-subst"&gt;{i}&lt;/span&gt;"&lt;/span&gt;);
    });
}
&lt;span class="hljs-keyword"&gt;catch&lt;/span&gt; (AggregateException ex)
{
    &lt;span class="hljs-keyword"&gt;foreach&lt;/span&gt; (&lt;span class="hljs-keyword"&gt;var&lt;/span&gt; e &lt;span class="hljs-keyword"&gt;in&lt;/span&gt; ex.InnerExceptions)
    {
        Console.WriteLine(&lt;span class="hljs-string"&gt;$"Caught exception: &lt;span class="hljs-subst"&gt;{e.Message}&lt;/span&gt;"&lt;/span&gt;);
    }
}
&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h3&gt;&lt;strong&gt;3. Breaking Out of &lt;code&gt;Parallel.ForEach&lt;/code&gt;&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;If you need to stop processing early, use the &lt;code&gt;ParallelLoopState&lt;/code&gt; parameter:&lt;/p&gt;&lt;pre class="!overflow-visible"&gt;&lt;div class="contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950"&gt;&lt;div class="flex items-center text-token-text-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md h-9 bg-token-sidebar-surface-primary dark:bg-token-main-surface-secondary select-none"&gt;csharp&lt;/div&gt;&lt;div class="sticky top-9 md:top-[5.75rem]"&gt;&lt;div class="absolute bottom-0 right-2 flex h-9 items-center"&gt;&lt;div class="flex items-center rounded bg-token-sidebar-surface-primary px-2 font-sans text-xs text-token-text-secondary dark:bg-token-main-surface-secondary"&gt;&lt;span class="" data-state="closed"&gt;&lt;button aria-label="Copy" class="flex gap-1 items-center select-none px-4 py-1"&gt;&lt;svg class="icon-xs" fill="none" height="24" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path clip-rule="evenodd" d="M7 5C7 3.34315 8.34315 2 10 2H19C20.6569 2 22 3.34315 22 5V14C22 15.6569 20.6569 17 19 17H17V19C17 20.6569 15.6569 22 14 22H5C3.34315 22 2 20.6569 2 19V10C2 8.34315 3.34315 7 5 7H7V5ZM9 7H14C15.6569 7 17 8.34315 17 10V15H19C19.5523 15 20 14.5523 20 14V5C20 4.44772 19.5523 4 19 4H10C9.44772 4 9 4.44772 9 5V7ZM5 9C4.44772 9 4 9.44772 4 10V19C4 19.5523 4.44772 20 5 20H14C14.5523 20 15 19.5523 15 19V10C15 9.44772 14.5523 9 14 9H5Z" fill-rule="evenodd" fill="currentColor"&gt;&lt;/path&gt;&lt;/svg&gt;Copy&lt;/button&gt;&lt;/span&gt;&lt;span class="" data-state="closed"&gt;&lt;button class="flex select-none items-center gap-1"&gt;&lt;svg class="icon-xs" fill="none" height="24" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path d="M2.5 5.5C4.3 5.2 5.2 4 5.5 2.5C5.8 4 6.7 5.2 8.5 5.5C6.7 5.8 5.8 7 5.5 8.5C5.2 7 4.3 5.8 2.5 5.5Z" fill="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor"&gt;&lt;/path&gt;&lt;path d="M5.66282 16.5231L5.18413 19.3952C5.12203 19.7678 5.09098 19.9541 5.14876 20.0888C5.19933 20.2067 5.29328 20.3007 5.41118 20.3512C5.54589 20.409 5.73218 20.378 6.10476 20.3159L8.97693 19.8372C9.72813 19.712 10.1037 19.6494 10.4542 19.521C10.7652 19.407 11.0608 19.2549 11.3343 19.068C11.6425 18.8575 11.9118 18.5882 12.4503 18.0497L20 10.5C21.3807 9.11929 21.3807 6.88071 20 5.5C18.6193 4.11929 16.3807 4.11929 15 5.5L7.45026 13.0497C6.91175 13.5882 6.6425 13.8575 6.43197 14.1657C6.24513 14.4392 6.09299 14.7348 5.97903 15.0458C5.85062 15.3963 5.78802 15.7719 5.66282 16.5231Z" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor"&gt;&lt;/path&gt;&lt;path d="M14.5 7L18.5 11" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor"&gt;&lt;/path&gt;&lt;/svg&gt;Edit&lt;/button&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;code class="!whitespace-pre language-csharp"&gt;Parallel.ForEach(Enumerable.Range(&lt;span class="hljs-number"&gt;1&lt;/span&gt;, &lt;span class="hljs-number"&gt;100&lt;/span&gt;), (i, state) =&amp;gt;
{
    &lt;span class="hljs-keyword"&gt;if&lt;/span&gt; (i == &lt;span class="hljs-number"&gt;50&lt;/span&gt;)
    {
        Console.WriteLine(&lt;span class="hljs-string"&gt;"Stopping execution..."&lt;/span&gt;);
        state.Break();
    }
    Console.WriteLine(&lt;span class="hljs-string"&gt;$"Processing &lt;span class="hljs-subst"&gt;{i}&lt;/span&gt;"&lt;/span&gt;);
});
&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p&gt;This ensures minimal wasted work when an early exit condition is met.&lt;/p&gt;&lt;hr /&gt;&lt;h3&gt;&lt;strong&gt;4. Using &lt;code&gt;Partitioner&lt;/code&gt; for Large Collections&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;For massive datasets, &lt;code&gt;Partitioner&lt;/code&gt; optimizes performance by efficiently distributing workloads across threads.&lt;/p&gt;&lt;pre class="!overflow-visible"&gt;&lt;div class="contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950"&gt;&lt;div class="flex items-center text-token-text-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md h-9 bg-token-sidebar-surface-primary dark:bg-token-main-surface-secondary select-none"&gt;csharp&lt;/div&gt;&lt;div class="sticky top-9 md:top-[5.75rem]"&gt;&lt;div class="absolute bottom-0 right-2 flex h-9 items-center"&gt;&lt;div class="flex items-center rounded bg-token-sidebar-surface-primary px-2 font-sans text-xs text-token-text-secondary dark:bg-token-main-surface-secondary"&gt;&lt;span class="" data-state="closed"&gt;&lt;button aria-label="Copy" class="flex gap-1 items-center select-none px-4 py-1"&gt;&lt;svg class="icon-xs" fill="none" height="24" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path clip-rule="evenodd" d="M7 5C7 3.34315 8.34315 2 10 2H19C20.6569 2 22 3.34315 22 5V14C22 15.6569 20.6569 17 19 17H17V19C17 20.6569 15.6569 22 14 22H5C3.34315 22 2 20.6569 2 19V10C2 8.34315 3.34315 7 5 7H7V5ZM9 7H14C15.6569 7 17 8.34315 17 10V15H19C19.5523 15 20 14.5523 20 14V5C20 4.44772 19.5523 4 19 4H10C9.44772 4 9 4.44772 9 5V7ZM5 9C4.44772 9 4 9.44772 4 10V19C4 19.5523 4.44772 20 5 20H14C14.5523 20 15 19.5523 15 19V10C15 9.44772 14.5523 9 14 9H5Z" fill-rule="evenodd" fill="currentColor"&gt;&lt;/path&gt;&lt;/svg&gt;Copy&lt;/button&gt;&lt;/span&gt;&lt;span class="" data-state="closed"&gt;&lt;button class="flex select-none items-center gap-1"&gt;&lt;svg class="icon-xs" fill="none" height="24" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path d="M2.5 5.5C4.3 5.2 5.2 4 5.5 2.5C5.8 4 6.7 5.2 8.5 5.5C6.7 5.8 5.8 7 5.5 8.5C5.2 7 4.3 5.8 2.5 5.5Z" fill="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor"&gt;&lt;/path&gt;&lt;path d="M5.66282 16.5231L5.18413 19.3952C5.12203 19.7678 5.09098 19.9541 5.14876 20.0888C5.19933 20.2067 5.29328 20.3007 5.41118 20.3512C5.54589 20.409 5.73218 20.378 6.10476 20.3159L8.97693 19.8372C9.72813 19.712 10.1037 19.6494 10.4542 19.521C10.7652 19.407 11.0608 19.2549 11.3343 19.068C11.6425 18.8575 11.9118 18.5882 12.4503 18.0497L20 10.5C21.3807 9.11929 21.3807 6.88071 20 5.5C18.6193 4.11929 16.3807 4.11929 15 5.5L7.45026 13.0497C6.91175 13.5882 6.6425 13.8575 6.43197 14.1657C6.24513 14.4392 6.09299 14.7348 5.97903 15.0458C5.85062 15.3963 5.78802 15.7719 5.66282 16.5231Z" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor"&gt;&lt;/path&gt;&lt;path d="M14.5 7L18.5 11" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor"&gt;&lt;/path&gt;&lt;/svg&gt;Edit&lt;/button&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;code class="!whitespace-pre language-csharp"&gt;&lt;span class="hljs-keyword"&gt;var&lt;/span&gt; partitioner = Partitioner.Create(Enumerable.Range(&lt;span class="hljs-number"&gt;1&lt;/span&gt;, &lt;span class="hljs-number"&gt;1000&lt;/span&gt;), &lt;span class="hljs-literal"&gt;true&lt;/span&gt;);

Parallel.ForEach(partitioner, i =&amp;gt;
{
    Console.WriteLine(&lt;span class="hljs-string"&gt;$"Processing &lt;span class="hljs-subst"&gt;{i}&lt;/span&gt;"&lt;/span&gt;);
});
&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p&gt;This approach enhances cache efficiency and reduces thread contention.&lt;/p&gt;&lt;hr /&gt;&lt;h2&gt;&lt;strong&gt;Final Thoughts&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;Parallel processing in .NET can significantly boost application performance when used correctly. By leveraging &lt;code&gt;Parallel.ForEach&lt;/code&gt;, controlling parallelism, handling exceptions, and using partitioning techniques, you can maximize efficiency while avoiding common pitfalls.&lt;/p&gt;&lt;p&gt;&#128313; &lt;strong&gt;Key Takeaways:&lt;/strong&gt;&lt;br /&gt;✔ Use &lt;code&gt;Parallel.ForEach&lt;/code&gt; for CPU-bound tasks.&lt;br /&gt;✔ Control concurrency with &lt;code&gt;ParallelOptions&lt;/code&gt;.&lt;br /&gt;✔ Handle exceptions with &lt;code&gt;AggregateException&lt;/code&gt;.&lt;br /&gt;✔ Break out early when needed.&lt;br /&gt;✔ Optimize large collections with &lt;code&gt;Partitioner&lt;/code&gt;.&lt;/p&gt;&lt;p&gt;With these best practices, you can write high-performance, scalable .NET applications that fully utilize modern multi-core processors. &#128640;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;What are your thoughts on &lt;code&gt;Parallel.ForEach&lt;/code&gt;? Have you used it in your projects? Share your experiences in the comments below!&lt;/p&gt;</description><link>http://skonakanchi.blogspot.com/2025/02/mastering-parallel-processing-in-net.html</link><author>noreply@blogger.com (Srinivasa Konakanchi)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1278002805699073381.post-2563660455826234063</guid><pubDate>Sun, 21 Jan 2024 02:55:00 +0000</pubDate><atom:updated>2024-09-03T21:47:22.718-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Dynamics Marketing</category><title> Unlocking Real-Time Marketing Excellence with Dynamics 365 Marketing</title><description>&lt;p style="text-align: left;"&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="w-full text-token-text-primary" data-testid="conversation-turn-7" style="--avatar-color: #19c37d; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--text-primary); font-family: Söhne, ui-sans-serif, system-ui, -apple-system, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Cantarell, &amp;quot;Noto Sans&amp;quot;, sans-serif, &amp;quot;Helvetica Neue&amp;quot;, Arial, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Noto Color Emoji&amp;quot;; font-size: 14px; text-align: left; width: 1268px;"&gt;&lt;div class="px-4 py-2 justify-center text-base md:gap-6 m-auto" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-size: 1rem; gap: 1.5rem; justify-content: center; line-height: 1.5rem; margin: auto; padding: 0.5rem 1rem;"&gt;&lt;div class="flex flex-1 text-base mx-auto gap-3 md:px-5 lg:px-1 xl:px-5 md:max-w-3xl lg:max-w-[40rem] xl:max-w-[48rem] group" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; display: flex; flex: 1 1 0%; font-size: 1rem; gap: 0.75rem; line-height: 1.5rem; margin-left: auto; margin-right: auto; max-width: 48rem; padding-left: 1.25rem; padding-right: 1.25rem;"&gt;&lt;div class="relative flex w-full flex-col lg:w-[calc(100%-115px)] agent-turn" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; display: flex; flex-direction: column; position: relative; width: calc(100% - 115px);"&gt;&lt;div class="flex-col gap-1 md:gap-3" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; flex-direction: column; gap: 0.75rem;"&gt;&lt;div class="flex flex-grow flex-col max-w-full" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; display: flex; flex-direction: column; flex-grow: 1; max-width: 100%;"&gt;&lt;div class="min-h-[20px] text-message flex flex-col items-start gap-3 whitespace-pre-wrap break-words [.text-message+&amp;amp;]:mt-5 overflow-x-auto" data-message-author-role="assistant" data-message-id="8cbcf8be-72f8-44fe-99ce-123617603f39" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; align-items: flex-start; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; display: flex; flex-direction: column; gap: 0.75rem; min-height: 20px; overflow-wrap: break-word; overflow-x: auto; white-space-collapse: preserve;"&gt;&lt;div class="markdown prose w-full break-words dark:prose-invert light" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-prose-body: #374151; --tw-prose-bold: #111827; --tw-prose-bullets: #d1d5db; --tw-prose-captions: #6b7280; --tw-prose-code: #111827; --tw-prose-counters: #6b7280; --tw-prose-headings: #111827; --tw-prose-hr: #e5e7eb; --tw-prose-invert-body: #d1d5db; --tw-prose-invert-bold: #fff; --tw-prose-invert-bullets: #4b5563; --tw-prose-invert-captions: #9ca3af; --tw-prose-invert-code: #fff; --tw-prose-invert-counters: #9ca3af; --tw-prose-invert-headings: #fff; --tw-prose-invert-hr: #374151; --tw-prose-invert-lead: #9ca3af; --tw-prose-invert-links: #fff; --tw-prose-invert-pre-bg: rgba(0,0,0,.5); --tw-prose-invert-pre-code: #d1d5db; --tw-prose-invert-quote-borders: #374151; --tw-prose-invert-quotes: #f3f4f6; --tw-prose-invert-td-borders: #374151; --tw-prose-invert-th-borders: #4b5563; --tw-prose-lead: #4b5563; --tw-prose-links: #111827; --tw-prose-pre-bg: #1f2937; --tw-prose-pre-code: #e5e7eb; --tw-prose-quote-borders: #e5e7eb; --tw-prose-quotes: #111827; --tw-prose-td-borders: #e5e7eb; --tw-prose-th-borders: #d1d5db; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-body); font-size: 1rem; line-height: 1.75; max-width: none; overflow-wrap: break-word; width: 613px;"&gt;&lt;p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 1.25em 0px; text-align: left;"&gt;In the ever-evolving landscape of marketing, the ability to engage customers in real-time has become a game-changer. Dynamics 365 Marketing emerges as a powerhouse, seamlessly integrating cutting-edge technologies to empower businesses with real-time marketing capabilities.&lt;/p&gt;&lt;h3 style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-headings); font-size: 1.25em; line-height: 1.6; margin: 1rem 0px 0.5rem; text-align: left;"&gt;&lt;em style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box;"&gt;Real-Time Insights:&lt;/em&gt;&lt;/h3&gt;&lt;p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px 0px 1.25em; text-align: left;"&gt;Dynamics 365 Marketing provides a 360-degree view of customer interactions, offering real-time insights into preferences, behaviors, and engagement patterns. This invaluable data empowers marketers to make informed decisions instantly.&lt;/p&gt;&lt;h3 style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-headings); font-size: 1.25em; line-height: 1.6; margin: 1rem 0px 0.5rem; text-align: left;"&gt;&lt;em style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box;"&gt;Personalized Customer Journeys:&lt;/em&gt;&lt;/h3&gt;&lt;p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px 0px 1.25em; text-align: left;"&gt;Crafting personalized customer journeys is at the heart of real-time marketing. Dynamics 365 enables marketers to dynamically adjust campaigns based on customer responses, ensuring each interaction is relevant and timely.&lt;/p&gt;&lt;h3 style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-headings); font-size: 1.25em; line-height: 1.6; margin: 1rem 0px 0.5rem; text-align: left;"&gt;&lt;em style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box;"&gt;AI-Driven Predictive Analytics:&lt;/em&gt;&lt;/h3&gt;&lt;p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px 0px 1.25em; text-align: left;"&gt;Harnessing the power of artificial intelligence, Dynamics 365 Marketing predicts customer behavior, allowing marketers to proactively tailor campaigns. From predicting purchase intent to recommending personalized content, AI-driven insights elevate marketing strategies.&lt;/p&gt;&lt;h3 style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-headings); font-size: 1.25em; line-height: 1.6; margin: 1rem 0px 0.5rem; text-align: left;"&gt;&lt;em style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box;"&gt;Automated Trigger Campaigns:&lt;/em&gt;&lt;/h3&gt;&lt;p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px 0px 1.25em; text-align: left;"&gt;Say goodbye to delayed responses. Dynamics 365 Marketing facilitates automated trigger campaigns that instantly respond to customer actions. Whether it's an abandoned cart or a webinar sign-up, automated triggers ensure timely follow-ups.&lt;/p&gt;&lt;h3 style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-headings); font-size: 1.25em; line-height: 1.6; margin: 1rem 0px 0.5rem; text-align: left;"&gt;&lt;em style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box;"&gt;Multi-Channel Integration:&lt;/em&gt;&lt;/h3&gt;&lt;p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px 0px 1.25em; text-align: left;"&gt;Real-time marketing isn't confined to a single channel. Dynamics 365 seamlessly integrates with various communication channels – email, social media, SMS, and more. This unified approach ensures consistent messaging across channels in real-time.&lt;/p&gt;&lt;h3 style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-headings); font-size: 1.25em; line-height: 1.6; margin: 1rem 0px 0.5rem; text-align: left;"&gt;&lt;em style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box;"&gt;Dynamic Content Adaptation:&lt;/em&gt;&lt;/h3&gt;&lt;p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px 0px 1.25em; text-align: left;"&gt;In the dynamic world of marketing, content relevance is paramount. Dynamics 365 Marketing dynamically adapts content based on real-time customer interactions. This ensures that each piece of content resonates with the customer's current needs and preferences.&lt;/p&gt;&lt;h3 style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-headings); font-size: 1.25em; line-height: 1.6; margin: 1rem 0px 0.5rem; text-align: left;"&gt;&lt;em style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box;"&gt;Agile Campaign Optimization:&lt;/em&gt;&lt;/h3&gt;&lt;p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px 0px 1.25em; text-align: left;"&gt;Real-time marketing demands agility. Dynamics 365 Marketing empowers marketers to optimize campaigns on the fly. Analyzing real-time data, marketers can tweak strategies, shift budgets, and refine targeting for maximum impact.&lt;/p&gt;&lt;h3 style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-headings); font-size: 1.25em; line-height: 1.6; margin: 1rem 0px 0.5rem; text-align: left;"&gt;&lt;em style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box;"&gt;Interactive Customer Experiences:&lt;/em&gt;&lt;/h3&gt;&lt;p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px 0px 1.25em; text-align: left;"&gt;Engage customers in real-time with interactive content. Dynamics 365 Marketing enables the creation of dynamic surveys, polls, and quizzes, fostering immediate customer participation and feedback.&lt;/p&gt;&lt;h3 style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-headings); font-size: 1.25em; line-height: 1.6; margin: 1rem 0px 0.5rem; text-align: left;"&gt;&lt;em style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box;"&gt;Performance Analytics in Real-Time:&lt;/em&gt;&lt;/h3&gt;&lt;p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px 0px 1.25em; text-align: left;"&gt;Track campaign performance in real-time with Dynamics 365 Marketing's robust analytics. From open rates to conversion metrics, marketers gain instant insights, enabling them to refine strategies and maximize ROI.&lt;/p&gt;&lt;h3 style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-headings); font-size: 1.25em; line-height: 1.6; margin: 1rem 0px 0.5rem; text-align: left;"&gt;&lt;em style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box;"&gt;Continuous A/B Testing:&lt;/em&gt;&lt;/h3&gt;&lt;p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px 0px 1.25em; text-align: left;"&gt;Real-time marketing thrives on experimentation. Dynamics 365 Marketing facilitates continuous A/B testing, allowing marketers to optimize campaigns iteratively. This iterative approach ensures that marketing efforts are always evolving for better results.&lt;/p&gt;&lt;h3 style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-headings); font-size: 1.25em; line-height: 1.6; margin: 1rem 0px 0.5rem; text-align: left;"&gt;&lt;em style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box;"&gt;Conclusion:&lt;/em&gt;&lt;/h3&gt;&lt;p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px; text-align: left;"&gt;In a world where customer expectations evolve rapidly, Dynamics 365 Marketing emerges as a catalyst for real-time marketing success. By seamlessly integrating insights, automation, and AI-driven capabilities, businesses can unlock unparalleled customer engagement and stay ahead in the dynamic marketing landscape. Elevate your marketing game with Dynamics 365 Marketing and embark on a journey of real-time marketing excellence.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="mt-1 flex justify-start gap-3 empty:hidden" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; display: flex; gap: 0.75rem; justify-content: flex-start; margin-top: 0.25rem;"&gt;&lt;div class="text-gray-400 flex self-end lg:self-center justify-center lg:justify-start mt-0 -ml-1 visible" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-text-opacity: 1; --tw-translate-x: 0; --tw-translate-y: 0; align-self: center; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: rgba(172,172,190,var(--tw-text-opacity)); display: flex; justify-content: flex-start; margin-left: -0.25rem; margin-top: 0px; visibility: visible;"&gt;&lt;span data-state="closed" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box;"&gt;&lt;button class="flex items-center gap-1.5 rounded-md p-1 text-xs hover:text-gray-950 dark:text-gray-400 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400 md:invisible md:group-hover:visible md:group-[.final-completion]:visible" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; align-items: center; appearance: button; background-image: none; border-color: rgb(217, 217, 227); border-radius: 0.375rem; border-style: solid; border-width: 0px; cursor: pointer; display: flex; font-family: inherit; font-size: 0.75rem; font-weight: inherit; gap: 0.375rem; line-height: 1rem; margin: 0px; padding: 0.25rem; visibility: visible;"&gt;&lt;svg class="icon-md" fill="none" height="24" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path clip-rule="evenodd" d="M12 4C10.8954 4 10 4.89543 10 6H14C14 4.89543 13.1046 4 12 4ZM8.53513 4C9.22675 2.8044 10.5194 2 12 2C13.4806 2 14.7733 2.8044 15.4649 4H17C18.6569 4 20 5.34315 20 7V19C20 20.6569 18.6569 22 17 22H7C5.34315 22 4 20.6569 4 19V7C4 5.34315 5.34315 4 7 4H8.53513ZM8 6H7C6.44772 6 6 6.44772 6 7V19C6 19.5523 6.44772 20 7 20H17C17.5523 20 18 19.5523 18 19V7C18 6.44772 17.5523 6 17 6H16C16 7.10457 15.1046 8 14 8H10C8.89543 8 8 7.10457 8 6Z" fill-rule="evenodd" fill="currentColor"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/span&gt;&lt;div class="flex" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; display: flex;"&gt;&lt;span data-state="closed" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box;"&gt;&lt;button class="p-1 rounded-md disabled:dark:hover:text-gray-400 dark:hover:text-gray-200 dark:text-gray-400 text-gray-400 hover:text-gray-950 md:invisible md:group-hover:visible md:group-[.final-completion]:visible" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-text-opacity: 1; --tw-translate-x: 0; --tw-translate-y: 0; appearance: button; background-image: none; border-color: rgb(217, 217, 227); border-radius: 0.375rem; border-style: solid; border-width: 0px; cursor: pointer; font-family: inherit; font-size: 16px; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0.25rem; visibility: visible;"&gt;&lt;svg class="icon-md" fill="none" height="24" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path clip-rule="evenodd" d="M12.1318 2.50389C12.3321 2.15338 12.7235 1.95768 13.124 2.00775L13.5778 2.06447C16.0449 2.37286 17.636 4.83353 16.9048 7.20993L16.354 8.99999H17.0722C19.7097 8.99999 21.6253 11.5079 20.9313 14.0525L19.5677 19.0525C19.0931 20.7927 17.5124 22 15.7086 22H6C4.34315 22 3 20.6568 3 19V12C3 10.3431 4.34315 8.99999 6 8.99999H8C8.25952 8.99999 8.49914 8.86094 8.6279 8.63561L12.1318 2.50389ZM10 20H15.7086C16.6105 20 17.4008 19.3964 17.6381 18.5262L19.0018 13.5262C19.3488 12.2539 18.391 11 17.0722 11H15C14.6827 11 14.3841 10.8494 14.1956 10.5941C14.0071 10.3388 13.9509 10.0092 14.0442 9.70591L14.9932 6.62175C15.3384 5.49984 14.6484 4.34036 13.5319 4.08468L10.3644 9.62789C10.0522 10.1742 9.56691 10.5859 9 10.8098V19C9 19.5523 9.44772 20 10 20ZM7 11V19C7 19.3506 7.06015 19.6872 7.17071 20H6C5.44772 20 5 19.5523 5 19V12C5 11.4477 5.44772 11 6 11H7Z" fill-rule="evenodd" fill="currentColor"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/span&gt;&lt;span data-state="closed" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box;"&gt;&lt;button class="p-1 rounded-md disabled:dark:hover:text-gray-400 dark:hover:text-gray-200 dark:text-gray-400 text-gray-400 hover:text-gray-950 md:invisible md:group-hover:visible md:group-[.final-completion]:visible" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-text-opacity: 1; --tw-translate-x: 0; --tw-translate-y: 0; appearance: button; background-image: none; border-color: rgb(217, 217, 227); border-radius: 0.375rem; border-style: solid; border-width: 0px; cursor: pointer; font-family: inherit; font-size: 16px; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0.25rem; visibility: visible;"&gt;&lt;svg class="icon-md" fill="none" height="24" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path clip-rule="evenodd" d="M11.8727 21.4961C11.6725 21.8466 11.2811 22.0423 10.8805 21.9922L10.4267 21.9355C7.95958 21.6271 6.36855 19.1665 7.09975 16.7901L7.65054 15H6.93226C4.29476 15 2.37923 12.4921 3.0732 9.94753L4.43684 4.94753C4.91145 3.20728 6.49209 2 8.29589 2H18.0045C19.6614 2 21.0045 3.34315 21.0045 5V12C21.0045 13.6569 19.6614 15 18.0045 15H16.0045C15.745 15 15.5054 15.1391 15.3766 15.3644L11.8727 21.4961ZM14.0045 4H8.29589C7.39399 4 6.60367 4.60364 6.36637 5.47376L5.00273 10.4738C4.65574 11.746 5.61351 13 6.93226 13H9.00451C9.32185 13 9.62036 13.1506 9.8089 13.4059C9.99743 13.6612 10.0536 13.9908 9.96028 14.2941L9.01131 17.3782C8.6661 18.5002 9.35608 19.6596 10.4726 19.9153L13.6401 14.3721C13.9523 13.8258 14.4376 13.4141 15.0045 13.1902V5C15.0045 4.44772 14.5568 4 14.0045 4ZM17.0045 13V5C17.0045 4.64937 16.9444 4.31278 16.8338 4H18.0045C18.5568 4 19.0045 4.44772 19.0045 5V12C19.0045 12.5523 18.5568 13 18.0045 13H17.0045Z" fill-rule="evenodd" fill="currentColor"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="w-full text-token-text-primary" data-testid="conversation-turn-8" style="--avatar-color: #19c37d; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--text-primary); font-family: Söhne, ui-sans-serif, system-ui, -apple-system, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Cantarell, &amp;quot;Noto Sans&amp;quot;, sans-serif, &amp;quot;Helvetica Neue&amp;quot;, Arial, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Noto Color Emoji&amp;quot;; font-size: 14px; text-align: left; width: 1268px;"&gt;&lt;div class="px-4 py-2 justify-center text-base md:gap-6 m-auto" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-size: 1rem; gap: 1.5rem; justify-content: center; line-height: 1.5rem; margin: auto; padding: 0.5rem 1rem;"&gt;&lt;div class="flex flex-1 text-base mx-auto gap-3 md:px-5 lg:px-1 xl:px-5 md:max-w-3xl lg:max-w-[40rem] xl:max-w-[48rem] group" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; display: flex; flex: 1 1 0%; font-size: 1rem; gap: 0.75rem; line-height: 1.5rem; margin-left: auto; margin-right: auto; max-width: 48rem; padding-left: 1.25rem; padding-right: 1.25rem;"&gt;&lt;div class="flex-shrink-0 flex flex-col relative items-end" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; align-items: flex-end; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; display: flex; flex-direction: column; flex-shrink: 0; position: relative;"&gt;&lt;div style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box;"&gt;&lt;div class="pt-0.5" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; padding-top: 0.125rem;"&gt;&lt;div class="gizmo-shadow-stroke flex h-6 w-6 items-center justify-center overflow-hidden rounded-full" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; align-items: center; border-radius: 9999px; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; display: flex; height: 1.5rem; justify-content: center; overflow: hidden; position: relative; width: 1.5rem;"&gt;&lt;div class="relative flex" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; display: flex; position: relative;"&gt;&lt;img alt="User" class="rounded-sm" data-nimg="1" decoding="async" height="24" loading="lazy" src="https://s.gravatar.com/avatar/b93ce1f1f6aeb97bdbd7b035831c60a3?s=480&amp;amp;r=pg&amp;amp;d=https%3A%2F%2Fcdn.auth0.com%2Favatars%2Fks.png" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border-radius: 0.125rem; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: transparent; display: block; height: auto; max-width: 100%; text-align: left; vertical-align: middle;" width="24" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="relative flex w-full flex-col lg:w-[calc(100%-115px)]" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; display: flex; flex-direction: column; position: relative; width: calc(100% - 115px);"&gt;&lt;div class="font-semibold select-none" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-weight: 600; text-align: left; user-select: none;"&gt;You&lt;/div&gt;&lt;div class="flex-col gap-1 md:gap-3" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; flex-direction: column; gap: 0.75rem;"&gt;&lt;div class="flex flex-grow flex-col max-w-full" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; display: flex; flex-direction: column; flex-grow: 1; max-width: 100%;"&gt;&lt;div class="min-h-[20px] text-message flex flex-col items-start gap-3 whitespace-pre-wrap break-words [.text-message+&amp;amp;]:mt-5 overflow-x-auto" data-message-author-role="user" data-message-id="aaa2462f-c320-4d1b-a2c5-53666849e880" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; align-items: flex-start; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; display: flex; flex-direction: column; gap: 0.75rem; min-height: 20px; overflow-wrap: break-word; overflow-x: auto; white-space-collapse: preserve;"&gt;&lt;div style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; text-align: left;"&gt;add official documentation links to the blob post  and also make it more google search index read&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="w-full text-token-text-primary" data-testid="conversation-turn-9" style="--avatar-color: #19c37d; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--text-primary); font-family: Söhne, ui-sans-serif, system-ui, -apple-system, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Cantarell, &amp;quot;Noto Sans&amp;quot;, sans-serif, &amp;quot;Helvetica Neue&amp;quot;, Arial, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Noto Color Emoji&amp;quot;; font-size: 14px; text-align: left; width: 1268px;"&gt;&lt;div class="px-4 py-2 justify-center text-base md:gap-6 m-auto" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-size: 1rem; gap: 1.5rem; justify-content: center; line-height: 1.5rem; margin: auto; padding: 0.5rem 1rem;"&gt;&lt;div class="flex flex-1 text-base mx-auto gap-3 md:px-5 lg:px-1 xl:px-5 md:max-w-3xl lg:max-w-[40rem] xl:max-w-[48rem] group final-completion" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; display: flex; flex: 1 1 0%; font-size: 1rem; gap: 0.75rem; line-height: 1.5rem; margin-left: auto; margin-right: auto; max-width: 48rem; padding-left: 1.25rem; padding-right: 1.25rem;"&gt;&lt;div class="relative flex w-full flex-col lg:w-[calc(100%-115px)] agent-turn" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; display: flex; flex-direction: column; position: relative; width: calc(100% - 115px);"&gt;&lt;div class="flex-col gap-1 md:gap-3" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; flex-direction: column; gap: 0.75rem;"&gt;&lt;div class="flex flex-grow flex-col max-w-full" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; display: flex; flex-direction: column; flex-grow: 1; max-width: 100%;"&gt;&lt;div class="min-h-[20px] text-message flex flex-col items-start gap-3 whitespace-pre-wrap break-words [.text-message+&amp;amp;]:mt-5 overflow-x-auto" data-message-author-role="assistant" data-message-id="252ab7fa-5104-474b-8047-c0e359531100" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; align-items: flex-start; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; display: flex; flex-direction: column; gap: 0.75rem; min-height: 20px; overflow-wrap: break-word; overflow-x: auto; white-space-collapse: preserve;"&gt;&lt;div class="markdown prose w-full break-words dark:prose-invert light" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-prose-body: #374151; --tw-prose-bold: #111827; --tw-prose-bullets: #d1d5db; --tw-prose-captions: #6b7280; --tw-prose-code: #111827; --tw-prose-counters: #6b7280; --tw-prose-headings: #111827; --tw-prose-hr: #e5e7eb; --tw-prose-invert-body: #d1d5db; --tw-prose-invert-bold: #fff; --tw-prose-invert-bullets: #4b5563; --tw-prose-invert-captions: #9ca3af; --tw-prose-invert-code: #fff; --tw-prose-invert-counters: #9ca3af; --tw-prose-invert-headings: #fff; --tw-prose-invert-hr: #374151; --tw-prose-invert-lead: #9ca3af; --tw-prose-invert-links: #fff; --tw-prose-invert-pre-bg: rgba(0,0,0,.5); --tw-prose-invert-pre-code: #d1d5db; --tw-prose-invert-quote-borders: #374151; --tw-prose-invert-quotes: #f3f4f6; --tw-prose-invert-td-borders: #374151; --tw-prose-invert-th-borders: #4b5563; --tw-prose-lead: #4b5563; --tw-prose-links: #111827; --tw-prose-pre-bg: #1f2937; --tw-prose-pre-code: #e5e7eb; --tw-prose-quote-borders: #e5e7eb; --tw-prose-quotes: #111827; --tw-prose-td-borders: #e5e7eb; --tw-prose-th-borders: #d1d5db; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-body); font-size: 1rem; line-height: 1.75; max-width: none; overflow-wrap: break-word; width: 613px;"&gt;&lt;p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px 0px 1.25em; text-align: left;"&gt;&lt;span color="var(--tw-prose-bold)" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-weight: 600;"&gt;Unlocking Real-Time Marketing Excellence with Dynamics 365 Marketing&lt;/span&gt;&lt;/p&gt;&lt;p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 1.25em 0px; text-align: left;"&gt;In the rapidly evolving realm of marketing, real-time engagement has become pivotal. Dynamics 365 Marketing stands out as a powerhouse, integrating advanced technologies to empower businesses with real-time marketing capabilities.&lt;/p&gt;&lt;h3 style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-headings); font-size: 1.25em; line-height: 1.6; margin: 1rem 0px 0.5rem; text-align: left;"&gt;&lt;em style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box;"&gt;Real-Time Insights:&lt;/em&gt;&lt;/h3&gt;&lt;p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px 0px 1.25em; text-align: left;"&gt;Gain a holistic view of customer interactions with &lt;a style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--link);" target="_new"&gt;Dynamics 365 Marketing&lt;/a&gt;, providing real-time insights into preferences, behaviors, and engagement patterns.&lt;/p&gt;&lt;h3 style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-headings); font-size: 1.25em; line-height: 1.6; margin: 1rem 0px 0.5rem; text-align: left;"&gt;&lt;em style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box;"&gt;Personalized Customer Journeys:&lt;/em&gt;&lt;/h3&gt;&lt;p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px 0px 1.25em; text-align: left;"&gt;Craft personalized customer journeys at the core of real-time marketing. Dynamics 365 enables dynamic adjustments based on customer responses, ensuring each interaction is relevant and timely. Explore more on &lt;a style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--link);" target="_new"&gt;personalization&lt;/a&gt;.&lt;/p&gt;&lt;h3 style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-headings); font-size: 1.25em; line-height: 1.6; margin: 1rem 0px 0.5rem; text-align: left;"&gt;&lt;em style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box;"&gt;AI-Driven Predictive Analytics:&lt;/em&gt;&lt;/h3&gt;&lt;p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px 0px 1.25em; text-align: left;"&gt;Leverage AI for predictive analytics predicting customer behavior. Dynamics 365 Marketing predicts purchase intent and recommends personalized content. Discover AI capabilities &lt;a style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--link);" target="_new"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;h3 style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-headings); font-size: 1.25em; line-height: 1.6; margin: 1rem 0px 0.5rem; text-align: left;"&gt;&lt;em style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box;"&gt;Automated Trigger Campaigns:&lt;/em&gt;&lt;/h3&gt;&lt;p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px 0px 1.25em; text-align: left;"&gt;Bid farewell to delays with automated triggers. Dynamics 365 Marketing facilitates campaigns that respond instantly to customer actions. Learn more about &lt;a style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--link);" target="_new"&gt;automation&lt;/a&gt;.&lt;/p&gt;&lt;h3 style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-headings); font-size: 1.25em; line-height: 1.6; margin: 1rem 0px 0.5rem; text-align: left;"&gt;&lt;em style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box;"&gt;Multi-Channel Integration:&lt;/em&gt;&lt;/h3&gt;&lt;p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px 0px 1.25em; text-align: left;"&gt;Dynamics 365 seamlessly integrates with communication channels. Ensure consistent messaging across channels in real-time. Explore &lt;a style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--link);" target="_new"&gt;channel integration&lt;/a&gt;.&lt;/p&gt;&lt;h3 style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-headings); font-size: 1.25em; line-height: 1.6; margin: 1rem 0px 0.5rem; text-align: left;"&gt;&lt;em style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box;"&gt;Dynamic Content Adaptation:&lt;/em&gt;&lt;/h3&gt;&lt;p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px 0px 1.25em; text-align: left;"&gt;Adapt content dynamically based on real-time interactions. Dynamics 365 Marketing ensures content resonates with current customer needs. Learn about &lt;a style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--link);" target="_new"&gt;content adaptation&lt;/a&gt;.&lt;/p&gt;&lt;h3 style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-headings); font-size: 1.25em; line-height: 1.6; margin: 1rem 0px 0.5rem; text-align: left;"&gt;&lt;em style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box;"&gt;Agile Campaign Optimization:&lt;/em&gt;&lt;/h3&gt;&lt;p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px 0px 1.25em; text-align: left;"&gt;Optimize campaigns on-the-fly with Dynamics 365 Marketing. Refine strategies and shift budgets based on real-time insights. Enhance your &lt;a style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--link);" target="_new"&gt;agility&lt;/a&gt;.&lt;/p&gt;&lt;h3 style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-headings); font-size: 1.25em; line-height: 1.6; margin: 1rem 0px 0.5rem; text-align: left;"&gt;&lt;em style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box;"&gt;Interactive Customer Experiences:&lt;/em&gt;&lt;/h3&gt;&lt;p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px 0px 1.25em; text-align: left;"&gt;Foster immediate customer participation with interactive content. Dynamics 365 Marketing enables dynamic surveys, polls, and quizzes. Explore &lt;a style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--link);" target="_new"&gt;interactive content&lt;/a&gt;.&lt;/p&gt;&lt;h3 style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-headings); font-size: 1.25em; line-height: 1.6; margin: 1rem 0px 0.5rem; text-align: left;"&gt;&lt;em style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box;"&gt;Performance Analytics in Real-Time:&lt;/em&gt;&lt;/h3&gt;&lt;p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px 0px 1.25em; text-align: left;"&gt;Track campaign performance in real-time with Dynamics 365 Marketing's robust analytics. Gain instant insights into open rates, conversion metrics, and more. Dive into &lt;a style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--link);" target="_new"&gt;analytics&lt;/a&gt;.&lt;/p&gt;&lt;h3 style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-headings); font-size: 1.25em; line-height: 1.6; margin: 1rem 0px 0.5rem; text-align: left;"&gt;&lt;em style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box;"&gt;Continuous A/B Testing:&lt;/em&gt;&lt;/h3&gt;&lt;p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px 0px 1.25em; text-align: left;"&gt;Optimize campaigns iteratively with continuous A/B testing. Dynamics 365 Marketing empowers marketers to refine strategies for better results. Discover &lt;a style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--link);" target="_new"&gt;testing&lt;/a&gt;.&lt;/p&gt;&lt;h3 style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-headings); font-size: 1.25em; line-height: 1.6; margin: 1rem 0px 0.5rem; text-align: left;"&gt;&lt;em style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box;"&gt;Conclusion:&lt;/em&gt;&lt;/h3&gt;&lt;p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px; text-align: left;"&gt;In a world where customer expectations evolve rapidly, Dynamics 365 Marketing is a catalyst for real-time marketing success. Unlock unparalleled customer engagement with insights, automation, and AI-driven capabilities. Elevate your marketing game with &lt;a style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--link);" target="_new"&gt;Dynamics 365 Marketing&lt;/a&gt; and embark on a journey of real-time marketing excellence.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description><link>http://skonakanchi.blogspot.com/2024/01/unlocking-real-time-marketing.html</link><author>noreply@blogger.com (Srinivasa Konakanchi)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1278002805699073381.post-25086688708728143</guid><pubDate>Wed, 26 Dec 2018 21:34:00 +0000</pubDate><atom:updated>2018-12-26T16:34:51.504-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Visual Studio</category><title>The setup for this installation of Visual Studio is not complete. Please run the Visual Studio Installer again to correct the issue.</title><description>&lt;div class="" style="background-color: white; box-sizing: border-box; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Open Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; margin-bottom: 10px; overflow-wrap: break-word;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="" style="background-color: white; box-sizing: border-box; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Open Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; margin-bottom: 10px; overflow-wrap: break-word;"&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Recently I have faced this issue. I tried to install the &lt;a href="https://visualstudio.microsoft.com/downloads/" target="_blank"&gt;Visual Studio community edition&lt;/a&gt;.&amp;nbsp; Cannot start Visual Studio Community Edition after installing. Got the error message "The setup for this installation of Visual Studio is not complete. Please run the Visual Studio Installer again to correct the issue." when launching.&lt;/div&gt;
&lt;div class="" style="background-color: white; box-sizing: border-box; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Open Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; margin-bottom: 10px; overflow-wrap: break-word;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="" style="background-color: white; box-sizing: border-box; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Open Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; margin-bottom: 10px; overflow-wrap: break-word;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqDDGQZflNmYXjpzDKUzDBfWyUhSllgDrr9YqeoTryyuZWD7ZP7r05frlmE6IY1kPUgjhrm5YGDxmABIuohoJPptADWLgj2VOOfvR3PkWWV-RBBXjpHaZUpls0QL99mIQ6fR3TZdh7FHLv/s1600/VS-Error.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="216" data-original-width="493" height="175" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqDDGQZflNmYXjpzDKUzDBfWyUhSllgDrr9YqeoTryyuZWD7ZP7r05frlmE6IY1kPUgjhrm5YGDxmABIuohoJPptADWLgj2VOOfvR3PkWWV-RBBXjpHaZUpls0QL99mIQ6fR3TZdh7FHLv/s400/VS-Error.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="" style="background-color: white; box-sizing: border-box; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Open Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; margin-bottom: 10px; overflow-wrap: break-word;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="background-color: white; box-sizing: border-box; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Open Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; margin-bottom: 10px; overflow-wrap: break-word;"&gt;
Tried to reinstall, repair, cleanup of install, deleting old directories. Nothing works. Here is the workaround which fixed.&lt;/div&gt;
&lt;div style="background-color: white; box-sizing: border-box; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Open Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; margin-bottom: 10px; overflow-wrap: break-word;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="background-color: white; box-sizing: border-box; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Open Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; margin-bottom: 10px; overflow-wrap: break-word;"&gt;
&lt;b&gt;Workaround:&amp;nbsp;&lt;/b&gt;&lt;/div&gt;
&lt;div style="background-color: white; box-sizing: border-box; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Open Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; margin-bottom: 10px; overflow-wrap: break-word;"&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Close any active Visual Studio applications&lt;/li&gt;
&lt;li&gt;Go to the path C:\\Program Files (x86)\\Microsoft Visual Studio\\&lt;/li&gt;
&lt;li&gt;Delete Installer folder&lt;/li&gt;
&lt;li&gt;Now start the Visual Studio. It works :)&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGr9sQcovPXZ80LV528t32e_cwJfm1Hvd6u-EQlHgAszdPeE9Z24C2uPRyuvlgUpC8WE5nHrhcBDzEdhxvTDdga2WI0Tz_pQxSpFBlfItqumGal9tV1aHEBBOffrfn24iPOZXCbVgYLRd8/s1600/VS-Path.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="287" data-original-width="753" height="151" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGr9sQcovPXZ80LV528t32e_cwJfm1Hvd6u-EQlHgAszdPeE9Z24C2uPRyuvlgUpC8WE5nHrhcBDzEdhxvTDdga2WI0Tz_pQxSpFBlfItqumGal9tV1aHEBBOffrfn24iPOZXCbVgYLRd8/s400/VS-Path.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</description><link>http://skonakanchi.blogspot.com/2018/12/the-setup-for-this-installation-of.html</link><author>noreply@blogger.com (Srinivasa Konakanchi)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqDDGQZflNmYXjpzDKUzDBfWyUhSllgDrr9YqeoTryyuZWD7ZP7r05frlmE6IY1kPUgjhrm5YGDxmABIuohoJPptADWLgj2VOOfvR3PkWWV-RBBXjpHaZUpls0QL99mIQ6fR3TZdh7FHLv/s72-c/VS-Error.png" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1278002805699073381.post-3594411987362446661</guid><pubDate>Fri, 10 Aug 2018 20:49:00 +0000</pubDate><atom:updated>2018-11-30T10:42:05.497-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ASP.NET</category><category domain="http://www.blogger.com/atom/ns#">ASP.NET MVC</category><title>Format of the initialization string does not conform to specification starting at index 0</title><description>&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Recently I have faced this issues, I have got an opportunity to provide some enhancements to existing application. When I start running the application, I got this error. After analyzing further with configuration, I found that the connection string is not well-formed in the web.config.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style="font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
Solution:&lt;/h4&gt;
&lt;div style="font-size: 11.25pt; margin: 0in;"&gt;
&lt;span style="background: white; color: #242729; font-family: &amp;quot;arial&amp;quot;;"&gt;Check your connection string. If you need help with it check&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.connectionstrings.com/"&gt;&lt;span style="background: white; font-family: inherit;"&gt;Connection Strings&lt;/span&gt;&lt;/a&gt;&lt;span style="background: white; color: #242729; font-family: &amp;quot;arial&amp;quot;;"&gt;, which has a list of commonly used ones.&lt;/span&gt;&lt;br /&gt;
&lt;span style="background: white; color: #242729; font-family: &amp;quot;arial&amp;quot;;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="color: #242729; font-family: Arial; font-size: 11.25pt; margin: 0in;"&gt;
&lt;span style="background: white;"&gt;Commonly used Connection Strings:&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: inherit; font-size: 15.75pt; margin: 0in;"&gt;
&lt;span style="font-weight: bold;"&gt;SQL Server 2012&lt;/span&gt;&lt;/div&gt;
&lt;div style="color: #242729; font-family: inherit; font-size: 11.25pt; margin: 0in;"&gt;
&lt;span style="background: white; font-style: italic; font-weight: bold;"&gt;Standard Security&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: inherit; font-size: 9.75pt; margin: 0in;"&gt;
&lt;span style="background: #eff0f1; color: #2b91af;"&gt;Server&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=myServerAddress;&lt;/span&gt;&lt;span style="background: #eff0f1; color: #2b91af;"&gt;Database&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=myDataBase;&lt;/span&gt;&lt;span style="background: #eff0f1; color: #2b91af;"&gt;User Id&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=myUsername;&lt;/span&gt;&lt;span style="background: #eff0f1; color: #2b91af;"&gt;Password&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=myPassword;&lt;/span&gt;&lt;/div&gt;
&lt;div style="color: #242729; font-family: inherit; font-size: 11.25pt; margin: 0in;"&gt;
&lt;span style="background: white; font-style: italic; font-weight: bold;"&gt;Trusted Connection&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: inherit; font-size: 9.75pt; margin: 0in;"&gt;
&lt;span style="background: #eff0f1; color: #2b91af;"&gt;Server&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=myServerAddress;&lt;/span&gt;&lt;span style="background: #eff0f1; color: #2b91af;"&gt;Database&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=myDataBase;&lt;/span&gt;&lt;span style="background: #eff0f1; color: #2b91af;"&gt;Trusted_Connection&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=&lt;/span&gt;&lt;span style="background: #eff0f1; color: #101094;"&gt;True&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div style="color: #242729; font-family: inherit; font-size: 11.25pt; margin: 0in;"&gt;
&lt;span style="background: white; font-style: italic; font-weight: bold;"&gt;Connection to a SQL Server instance&lt;/span&gt;&lt;/div&gt;
&lt;div style="color: #242729; font-family: inherit; font-size: 11.25pt; margin: 0in;"&gt;
&lt;span style="background: white; font-style: italic;"&gt;The server/instance name syntax used in the server option is the same for all SQL Server connection strings.&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: inherit; font-size: 9.75pt; margin: 0in;"&gt;
&lt;span style="background: #eff0f1; color: #2b91af;"&gt;Server&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=myServerName\myInstanceName;&lt;/span&gt;&lt;span style="background: #eff0f1; color: #2b91af;"&gt;Database&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=myDataBase;&lt;/span&gt;&lt;span style="background: #eff0f1; color: #2b91af;"&gt;User Id&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=myUsername;&lt;br /&gt;
&lt;/span&gt;&lt;span style="background: #eff0f1; color: #2b91af;"&gt;Password&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=myPassword;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: inherit; font-size: 15.75pt; margin: 0in;"&gt;
&lt;span style="font-weight: bold;"&gt;SQL Server 2005&lt;/span&gt;&lt;/div&gt;
&lt;div style="color: #242729; font-family: inherit; font-size: 11.25pt; margin: 0in;"&gt;
&lt;span style="background: white; font-style: italic; font-weight: bold;"&gt;Standard Security&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: inherit; font-size: 9.75pt; margin: 0in;"&gt;
&lt;span style="background: #eff0f1; color: #2b91af;"&gt;Server&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=myServerAddress;&lt;/span&gt;&lt;span style="background: #eff0f1; color: #2b91af;"&gt;Database&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=myDataBase;&lt;/span&gt;&lt;span style="background: #eff0f1; color: #2b91af;"&gt;User Id&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=myUsername;&lt;/span&gt;&lt;span style="background: #eff0f1; color: #2b91af;"&gt;Password&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=myPassword;&lt;/span&gt;&lt;/div&gt;
&lt;div style="color: #242729; font-family: inherit; font-size: 11.25pt; margin: 0in;"&gt;
&lt;span style="background: white; font-style: italic; font-weight: bold;"&gt;Trusted Connection&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: inherit; font-size: 9.75pt; margin: 0in;"&gt;
&lt;span style="background: #eff0f1; color: #2b91af;"&gt;Server&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=myServerAddress;&lt;/span&gt;&lt;span style="background: #eff0f1; color: #2b91af;"&gt;Database&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=myDataBase;&lt;/span&gt;&lt;span style="background: #eff0f1; color: #2b91af;"&gt;Trusted_Connection&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=&lt;/span&gt;&lt;span style="background: #eff0f1; color: #101094;"&gt;True&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div style="color: #242729; font-family: inherit; font-size: 11.25pt; margin: 0in;"&gt;
&lt;span style="background: white; font-style: italic; font-weight: bold;"&gt;Connection to a SQL Server instance&lt;/span&gt;&lt;/div&gt;
&lt;div style="color: #242729; font-family: inherit; font-size: 11.25pt; margin: 0in;"&gt;
&lt;span style="background: white; font-style: italic;"&gt;The server/instance name syntax used in the server option is the same for all SQL Server connection strings.&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: inherit; font-size: 9.75pt; margin: 0in;"&gt;
&lt;span style="background: #eff0f1; color: #2b91af;"&gt;Server&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=myServerName\myInstanceName;&lt;/span&gt;&lt;span style="background: #eff0f1; color: #2b91af;"&gt;Database&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=myDataBase;&lt;/span&gt;&lt;span style="background: #eff0f1; color: #2b91af;"&gt;User Id&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=myUsername;&lt;/span&gt;&lt;span style="background: #eff0f1; color: #2b91af;"&gt;Password&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=myPassword;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: inherit; font-size: 15.75pt; margin: 0in;"&gt;
&lt;span style="font-weight: bold;"&gt;MySQL&lt;/span&gt;&lt;/div&gt;
&lt;div style="color: #242729; font-family: inherit; font-size: 11.25pt; margin: 0in;"&gt;
&lt;span style="background: white; font-style: italic; font-weight: bold;"&gt;Standard&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: inherit; font-size: 9.75pt; margin: 0in;"&gt;
&lt;span style="background: #eff0f1; color: #2b91af;"&gt;Server&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=myServerAddress;&lt;/span&gt;&lt;span style="background: #eff0f1; color: #2b91af;"&gt;Database&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=myDataBase;&lt;/span&gt;&lt;span style="background: #eff0f1; color: #2b91af;"&gt;Uid&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=myUsername;&lt;/span&gt;&lt;span style="background: #eff0f1; color: #2b91af;"&gt;Pwd&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=myPassword;&lt;/span&gt;&lt;/div&gt;
&lt;div style="color: #242729; font-family: inherit; font-size: 11.25pt; margin: 0in;"&gt;
&lt;span style="background: white; font-style: italic; font-weight: bold;"&gt;Specifying TCP port&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: inherit; font-size: 9.75pt; margin: 0in;"&gt;
&lt;span style="background: #eff0f1; color: #2b91af;"&gt;Server&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=myServerAddress;&lt;/span&gt;&lt;span style="background: #eff0f1; color: #2b91af;"&gt;Port&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=&lt;/span&gt;&lt;span style="background: #eff0f1; color: #7d2727;"&gt;1234&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;;&lt;/span&gt;&lt;span style="background: #eff0f1; color: #2b91af;"&gt;Database&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=myDataBase;&lt;/span&gt;&lt;span style="background: #eff0f1; color: #2b91af;"&gt;Uid&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=myUsername;&lt;/span&gt;&lt;span style="background: #eff0f1; color: #2b91af;"&gt;Pwd&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=myPassword;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: inherit; font-size: 15.75pt; margin: 0in;"&gt;
&lt;span style="font-weight: bold;"&gt;Oracle&lt;/span&gt;&lt;/div&gt;
&lt;div style="color: #242729; font-family: inherit; font-size: 11.25pt; margin: 0in;"&gt;
&lt;span style="background: white; font-weight: bold;"&gt;Using TNS&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: inherit; font-size: 9.75pt; margin: 0in;"&gt;
&lt;span style="background: #eff0f1; color: #2b91af;"&gt;Data Source&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=TORCL;&lt;/span&gt;&lt;span style="background: #eff0f1; color: #2b91af;"&gt;User Id&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=myUsername;&lt;/span&gt;&lt;span style="background: #eff0f1; color: #2b91af;"&gt;Password&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=myPassword;&lt;/span&gt;&lt;/div&gt;
&lt;div style="color: #242729; font-family: inherit; font-size: 11.25pt; margin: 0in;"&gt;
&lt;span style="background: white; font-style: italic; font-weight: bold;"&gt;Using integrated security&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="font-family: inherit; font-size: 9.75pt; margin: 0in;"&gt;
&lt;span style="background: #eff0f1; color: #2b91af;"&gt;Data Source&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=TORCL;&lt;/span&gt;&lt;span style="background: #eff0f1; color: #2b91af;"&gt;Integrated Security&lt;/span&gt;&lt;span style="background: #eff0f1; color: #303336;"&gt;=SSPI;&lt;/span&gt;&lt;/div&gt;
</description><link>http://skonakanchi.blogspot.com/2018/11/format-of-initialization-string-does.html</link><author>noreply@blogger.com (Srinivasa Konakanchi)</author><thr:total>0</thr:total><georss:featurename>17531 County Rd 33.5, Sterling, CO 80751, USA</georss:featurename><georss:point>40.691751420799235 -103.27148475000001</georss:point><georss:box>15.169716920799235 -144.58007875 66.213785920799239 -61.962890750000014</georss:box></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1278002805699073381.post-2228519974550167204</guid><pubDate>Sat, 21 Jul 2018 01:18:00 +0000</pubDate><atom:updated>2018-07-19T22:14:09.903-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">c#.net</category><category domain="http://www.blogger.com/atom/ns#">ELMAH</category><title>Exclude ELMAH  404 errors reporting</title><description>&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Recently we have faced a  situation that  receiving lots of 404 errors for a xx\xx path not found   due to vulnerabilities scan software  run against our web application.

Since these errors raised by vulnerabilities scan software , we no need to concern and not required to log . So we decided to  stop ELMAH reporting this error.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;I have done some analysis to find the best way to exclude these types of errors from being reporting.
Here is the working solution I made with simple configuration changes in the &amp;nbsp;&amp;lt;elmah&amp;gt; section of web.config as specified below&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;script class="brush: xml" type="syntaxhighlighter"&gt;
&amp;lt;errorFilter&amp;gt;
        &amp;lt;test&amp;gt;
            &amp;lt;or&amp;gt;
                       &amp;lt;equal binding=&amp;quot;HttpStatusCode&amp;quot; value=&amp;quot;404&amp;quot; type=&amp;quot;Int32&amp;quot; /&amp;gt;
            &amp;lt;/or&amp;gt;
        &amp;lt;/test&amp;gt;
    &amp;lt;/errorFilter&amp;gt;
 
 &lt;/script&gt;</description><link>http://skonakanchi.blogspot.com/2017/12/exclude-elmah-404-errors-reporting.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1278002805699073381.post-4647389051537773964</guid><pubDate>Sat, 18 Mar 2017 02:58:00 +0000</pubDate><atom:updated>2017-03-17T23:03:58.342-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Excel</category><category domain="http://www.blogger.com/atom/ns#">MS Office</category><title>How to Disable Protected View in Microsoft Excel</title><description>You may experience this Alert message, when you work with excel files which are downloaded from internet or other sources&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRVKS6bqehgT_GQMEIv3xlyxSHRYwZcsRkDbSle05xIEoZLslZfrgZ85zF2WNRl2OWEMn0NJaGN00HYaAlQFMEdWVt-it_4PoxDwseNUBxYwvvIvqqPEgHzIltBIir-82KgDOZf_I9fbXw/s1600/1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="78" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRVKS6bqehgT_GQMEIv3xlyxSHRYwZcsRkDbSle05xIEoZLslZfrgZ85zF2WNRl2OWEMn0NJaGN00HYaAlQFMEdWVt-it_4PoxDwseNUBxYwvvIvqqPEgHzIltBIir-82KgDOZf_I9fbXw/s400/1.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
There are different ways to work &amp;nbsp;around this issue:&lt;br /&gt;
&lt;u&gt;&lt;br /&gt;&lt;/u&gt;
&lt;u&gt;Solution #1 ( Preferred )&lt;/u&gt;&lt;br /&gt;
The simplest and most secure method to get around this issue is to simply click the Enable Editing button, on a per-document basis, when you open an Excel (or other Microsoft office) file that has been downloaded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Solution #2 ( Not Preferred )&lt;/u&gt;&lt;br /&gt;
&lt;u&gt;&lt;br /&gt;&lt;/u&gt;
Alternatively, you can choose to disable the Protected View feature within Excel so that you no longer recieve the warning upon opening any Excel file that has been downloaded.&lt;br /&gt;
&lt;br /&gt;
In Excel&lt;br /&gt;
-&amp;gt; go to File&lt;br /&gt;
-&amp;gt; Options&lt;br /&gt;
-&amp;gt; Trust Center&lt;br /&gt;
-&amp;gt; Trust Center Settings&lt;br /&gt;
- &amp;gt; Protected View, and then&lt;br /&gt;
-&amp;gt;uncheck Enabled Protected View for files originating from the Internet.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTt1MkD5GP6kvAEoZF6APty29Ei7LmT0FaxNFQk-EMNzh5sCy1JkO5iysJFugwM4d-AKNY_s2caUSIGZukSwbLoaa880h7t-0q2nIwR_RrsNxG5gnrG5KjQdoovGPM1ictOkCnb2MPWkPZ/s1600/2.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" height="208" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTt1MkD5GP6kvAEoZF6APty29Ei7LmT0FaxNFQk-EMNzh5sCy1JkO5iysJFugwM4d-AKNY_s2caUSIGZukSwbLoaa880h7t-0q2nIwR_RrsNxG5gnrG5KjQdoovGPM1ictOkCnb2MPWkPZ/s400/2.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
There is also, in Trust Center Settings, a Macro Setting that you can use to Enable All Macros by default&lt;/div&gt;
&lt;br /&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnujkL1aYH4JwbMkFPMv_rW1FQ1AwRGR7Wzc9nFNxjp2bwYt9kWM1F5Rg9wKMOjG8wHt6YpT2ha2LPFqUgw1SVi6_WLqhgJ0Mf-sSNJ6TXzxHSPlMl-KjK4jCGIOWq7Oswhr17WIUA_0Dm/s1600/3.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" height="135" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnujkL1aYH4JwbMkFPMv_rW1FQ1AwRGR7Wzc9nFNxjp2bwYt9kWM1F5Rg9wKMOjG8wHt6YpT2ha2LPFqUgw1SVi6_WLqhgJ0Mf-sSNJ6TXzxHSPlMl-KjK4jCGIOWq7Oswhr17WIUA_0Dm/s320/3.JPG" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Note&lt;/b&gt;:Be aware that enabling this feature allows potentially dangerous code to run.If either of these Trust Center settings are changed, you need to be very careful about the Excel files which are opened&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;</description><link>http://skonakanchi.blogspot.com/2017/03/how-to-disable-protected-view-in.html</link><author>noreply@blogger.com (Srinivasa Konakanchi)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRVKS6bqehgT_GQMEIv3xlyxSHRYwZcsRkDbSle05xIEoZLslZfrgZ85zF2WNRl2OWEMn0NJaGN00HYaAlQFMEdWVt-it_4PoxDwseNUBxYwvvIvqqPEgHzIltBIir-82KgDOZf_I9fbXw/s72-c/1.JPG" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1278002805699073381.post-8685707358018595107</guid><pubDate>Fri, 17 Feb 2017 22:33:00 +0000</pubDate><atom:updated>2017-02-17T18:17:08.084-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">MS SQL Server</category><category domain="http://www.blogger.com/atom/ns#">SQL Server</category><title>Cannot execute script: Insufficient memory to continue the execution of the program</title><description>&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Recently i have faced this error when i am trying to execute large insert script file with SQL Management Studio. Sometimes, due to the heavy size of the script and data, we encounter this type of error. Server needs sufficient memory to execute and give the result.There are two possible options you can try to resolve&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMEZomEGrFkMuuTxkFBM5eY4wa82Xzt7wNAgf27gJcFwtmMbTS34cw6AbJGz1g2qHqDavBJiaa4dq6M2jrh68BRUNfMJdfi7FHljzNLmjXqicpkR7DGGxp_h5tqzOfAws_0cRb3EZNsXf4/s1600/error.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="93" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMEZomEGrFkMuuTxkFBM5eY4wa82Xzt7wNAgf27gJcFwtmMbTS34cw6AbJGz1g2qHqDavBJiaa4dq6M2jrh68BRUNfMJdfi7FHljzNLmjXqicpkR7DGGxp_h5tqzOfAws_0cRb3EZNsXf4/s400/error.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;Option #1&lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;Open cmd.exe as Administrator.&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Create Documents directory.&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Put your SQL Script file(script.sql) in the documents folder.&lt;/li&gt;
&lt;li&gt;Type query with sqlcmd, server-name, database-name and script-file-name as like above highlighted query or below command line screen.&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="text-align: center;"&gt;
&lt;pre class="brush: php; highlight: [5, 15]; html-script: true"&gt;


sqlcmd -S server-name -d database-name -i script.sql
&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZ9pKW1f1T1J99xV94Kx5jE1Oyia11j4M2ievr2XlKz6UBXvvzIt0kDuns1aJV8U1rT55qMJXprdbJpIlXcvwGAiOG0zwlly_879waiYQcTFVqVM8WI5VZyWrXqItoX6Na4LJrEKzQn7DC/s1600/result.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="183" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZ9pKW1f1T1J99xV94Kx5jE1Oyia11j4M2ievr2XlKz6UBXvvzIt0kDuns1aJV8U1rT55qMJXprdbJpIlXcvwGAiOG0zwlly_879waiYQcTFVqVM8WI5VZyWrXqItoX6Na4LJrEKzQn7DC/s320/result.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;b&gt;Option#2:&lt;/b&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
You can also simply increase the Maximum Server Memory value in server properties. To edit this setting, right click on server name and select Properties &amp;gt; Memory tab.&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</description><link>http://skonakanchi.blogspot.com/2017/02/cannot-execute-script-insufficient.html</link><author>noreply@blogger.com (Srinivasa Konakanchi)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMEZomEGrFkMuuTxkFBM5eY4wa82Xzt7wNAgf27gJcFwtmMbTS34cw6AbJGz1g2qHqDavBJiaa4dq6M2jrh68BRUNfMJdfi7FHljzNLmjXqicpkR7DGGxp_h5tqzOfAws_0cRb3EZNsXf4/s72-c/error.JPG" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1278002805699073381.post-5248316941397802519</guid><pubDate>Thu, 12 Jan 2017 22:52:00 +0000</pubDate><atom:updated>2017-02-17T18:36:01.041-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">WCF</category><category domain="http://www.blogger.com/atom/ns#">WCF Exception</category><title>There was no endpoint listening at (url) that could accept the message</title><description>&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Recently I got this exception .When I was trying to call a WCF service hosted in a new server from a Web application in my local. I got the error below&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: php; highlight: [5, 15]; html-script: true"&gt;There was no endpoint listening at http://localhost:[number]/XXXXX.svc that could accept the

message. This is often caused by an incorrect address or SOAP action. See InnerException,

if present, for more details.

&lt;/pre&gt;
&lt;br /&gt;
Initially i thought that some configuration went wrong .After investigation i found that we need to disable the default proxy.I have &amp;nbsp;added below config settings &amp;nbsp;in &amp;nbsp;the Web.config of service host project. After that everything worked perfectly !!!&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: php; highlight: [5, 15]; html-script: true"&gt;&amp;lt;system.net&amp;gt;
    &amp;lt;defaultproxy enabled="false"&amp;gt;
    &amp;lt;/defaultproxy&amp;gt;
&amp;lt;/system.net&amp;gt;


&lt;/pre&gt;
</description><link>http://skonakanchi.blogspot.com/2017/01/there-was-no-endpoint-listening-at-url.html</link><author>noreply@blogger.com (Srinivasa Konakanchi)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1278002805699073381.post-2235874055941929569</guid><pubDate>Tue, 06 Sep 2016 19:21:00 +0000</pubDate><atom:updated>2016-09-06T15:21:57.745-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">IIS</category><title>HTTP Error 404.3 - Not Found The page you are requesting cannot be served because of the extension configuration. If the page is a script, add a handler. If the file should be downloaded, add a MIME map</title><description>&lt;br /&gt;
Recently i faced this issue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGxACMnJDhK-HKD2ItlItKB4KUJnvtuDfwYzpY925wScmZDP_YSEBpjw1AwpfQtrCzxAEOetTuXjDakV5Ytxk-sJ-DoeXDM-zhujjofbn19Rou_xz7YbpaFnwgO9HRH8_Z6sN9azMEozOl/s1600/test.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="271" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGxACMnJDhK-HKD2ItlItKB4KUJnvtuDfwYzpY925wScmZDP_YSEBpjw1AwpfQtrCzxAEOetTuXjDakV5Ytxk-sJ-DoeXDM-zhujjofbn19Rou_xz7YbpaFnwgO9HRH8_Z6sN9azMEozOl/s400/test.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
After performing the below actions , this issue got resolved&lt;br /&gt;
&lt;br /&gt;
Solution:&lt;br /&gt;
&lt;br /&gt;
Check
#1: Make sure IIS installed correctly&amp;nbsp;
else install the IIS Server extensions &amp;nbsp;etc.. as specified below&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5lWko-ss6cxZRaYwIf8GLp9-mYigewDQUUgr2Xc4eliQbLM9yU_ydiQkKbxpCNkxOTp21gG2N3WxIc14t0GCaSIscAFhf2WSCvpUlEJORAlG1B4ZTLVSionHcM4-lOEnNTVk3V4OkZhci/s1600/iis2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5lWko-ss6cxZRaYwIf8GLp9-mYigewDQUUgr2Xc4eliQbLM9yU_ydiQkKbxpCNkxOTp21gG2N3WxIc14t0GCaSIscAFhf2WSCvpUlEJORAlG1B4ZTLVSionHcM4-lOEnNTVk3V4OkZhci/s320/iis2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhipeMVjRsgjD5D03gVPQY1iHWlPfJ_qVCFTqaxMZW3vU4Wy1_fWIxRD8ZqxPfZ25UB32p64lNYwBQqoF5-Ttd-w8s6BbJjc_WaSNWSN7zMJDhyphenhyphenPYzt0eNdajLh5lEfkh5n9FuGe-kEIW_/s1600/iis.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="227" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhipeMVjRsgjD5D03gVPQY1iHWlPfJ_qVCFTqaxMZW3vU4Wy1_fWIxRD8ZqxPfZ25UB32p64lNYwBQqoF5-Ttd-w8s6BbJjc_WaSNWSN7zMJDhyphenhyphenPYzt0eNdajLh5lEfkh5n9FuGe-kEIW_/s320/iis.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Click
on next and install&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Restart the IIS&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
This will fix your issues.&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
</description><link>http://skonakanchi.blogspot.com/2016/09/http-error-4043-not-found-page-you-are.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGxACMnJDhK-HKD2ItlItKB4KUJnvtuDfwYzpY925wScmZDP_YSEBpjw1AwpfQtrCzxAEOetTuXjDakV5Ytxk-sJ-DoeXDM-zhujjofbn19Rou_xz7YbpaFnwgO9HRH8_Z6sN9azMEozOl/s72-c/test.PNG" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1278002805699073381.post-5453341980029128422</guid><pubDate>Tue, 02 Aug 2016 18:14:00 +0000</pubDate><atom:updated>2016-08-11T14:18:46.731-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">jre</category><title>This applet displays a file-tree of the server to enable the user to browse its contents. Your browser is not configured correctly to use java applets. Please install the Java Runtime Environment (JRE) and be sure to install the browser plugins</title><description>&lt;br /&gt;
Usually you get this error when the Java Run time environment does not configured correctly. Recently i have also got this error when i am configuring the cold fusion.&lt;br /&gt;
&lt;br /&gt;
Follow the below steps to fix the issue&lt;br /&gt;
&lt;br /&gt;
Step#1: Make sure you install the jre in the machine&lt;br /&gt;
&lt;span style="font-family: &amp;quot;calibri&amp;quot;; font-size: 11pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Click &lt;a href="http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html" target="_blank"&gt;here &amp;nbsp;&lt;/a&gt;to download the jre&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;calibri&amp;quot;; font-size: 11pt;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: &amp;quot;calibri&amp;quot;;"&gt;&lt;span style="font-size: 14.6667px;"&gt;Step #2:&amp;nbsp;&lt;/span&gt;&lt;/span&gt;Follow
these below instructions to enable Java applets though your Web browser.&lt;br /&gt;
&lt;span style="font-family: &amp;quot;calibri&amp;quot;;"&gt;&lt;span style="font-size: 14.6667px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
&lt;b&gt;Internet Explorer&lt;/b&gt;&lt;/div&gt;
&lt;div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-size: 11pt;"&gt;Click Tools and then
Internet Options&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: 11pt;"&gt;Select the Security
tab, and select the Custom Level button&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: 11pt;"&gt;Scroll down to
Scripting of Java applets&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: 11pt;"&gt;Make sure the Enable
radio button is checked&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: 11pt;"&gt;Click OK to save
your preference&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjkTxy5aNmEZAhLVhp9K5QTDhX-MbvGJCzZCIEl0jX0sr7YVfV6XijP7qCsAqro59hv-4HUH-jGdaVjnC7HqPTHglmQ9F3g-x_wUvh7CBfCx62V-W5ZRMFuGKUz1w7PfGp-jJZ6ohzzqYX/s1600/IE-Settings.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjkTxy5aNmEZAhLVhp9K5QTDhX-MbvGJCzZCIEl0jX0sr7YVfV6XijP7qCsAqro59hv-4HUH-jGdaVjnC7HqPTHglmQ9F3g-x_wUvh7CBfCx62V-W5ZRMFuGKUz1w7PfGp-jJZ6ohzzqYX/s320/IE-Settings.png" width="252" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
&lt;b&gt;Firefox&lt;/b&gt;&lt;/div&gt;
&lt;div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-size: 11pt;"&gt;Open the Firefox
browser or restart it, if it is already running&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: 11pt;"&gt;From the Firefox
menu, select Tools, then click the Add-ons option&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: 11pt;"&gt;In the Add-ons
Manager window, select Plugins&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: 11pt;"&gt;Click Java (TM)
Platform plugin (Windows) or Java Applet Plug-in (Mac OS X) to select it&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: 11pt;"&gt;Check that the
option selected is Ask to Activate or Always Activate or on older Firefox
versions, click on the Enable button (if the button says Disable, Java is
already enabled)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; </description><link>http://skonakanchi.blogspot.com/2016/08/this-applet-displays-file-tree-of.html</link><author>noreply@blogger.com (Srinivasa Konakanchi)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjkTxy5aNmEZAhLVhp9K5QTDhX-MbvGJCzZCIEl0jX0sr7YVfV6XijP7qCsAqro59hv-4HUH-jGdaVjnC7HqPTHglmQ9F3g-x_wUvh7CBfCx62V-W5ZRMFuGKUz1w7PfGp-jJZ6ohzzqYX/s72-c/IE-Settings.png" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1278002805699073381.post-6809018025352167833</guid><pubDate>Wed, 13 Jul 2016 12:51:00 +0000</pubDate><atom:updated>2016-08-11T09:01:07.966-04:00</atom:updated><title>This configuration section cannot be used at this path. This happens when the section is locked at a parent level. Locking is either by default (overrideModeDefault="Deny"), or set explicitly by a location tag with overrideMode="Deny" or the legacy allowOverride="false".</title><description>&lt;div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
&lt;/div&gt;
&lt;div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
You will get this error when your not defined Features Delegations correctly &amp;nbsp;in the IIS .&amp;nbsp;&lt;/div&gt;
&lt;div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
Solution :&lt;/div&gt;
&lt;div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="color: #1f497d; font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
You can Fix the issue by configuring the Feature delegation as specified below &lt;/div&gt;
&lt;div style="color: #1f497d; font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
&lt;span style="font-size: 11pt;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-size: 11pt;"&gt;-&amp;gt; Got to IIS&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
-&amp;gt; Go to Features
View&lt;/div&gt;
&lt;div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
-&amp;gt;Click on the
Feature Delegation&lt;/div&gt;
&lt;div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
-&amp;gt;Update the&amp;nbsp; Below values&amp;nbsp;
with New Delegations &lt;/div&gt;
&lt;div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="direction: ltr;"&gt;
&lt;table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border-color: #A3A3A3; border-style: solid; border-width: 1pt; direction: ltr;" valign="top"&gt;
 &lt;tbody&gt;
&lt;tr&gt;
  &lt;td style="background-color: #d9d9d9; border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 2.0215in;"&gt;&lt;div style="color: #1f497d; font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
&amp;nbsp;Name&lt;/div&gt;
&lt;/td&gt;
  &lt;td style="background-color: #d9d9d9; border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.1458in;"&gt;&lt;div style="color: #1f497d; font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
Old
  Delegation&lt;/div&gt;
&lt;/td&gt;
  &lt;td style="background-color: #d9d9d9; border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.1298in;"&gt;&lt;div style="color: #1f497d; font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
New
  Delegation&lt;/div&gt;
&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr&gt;
  &lt;td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 2.0402in;"&gt;&lt;div style="color: #1f497d; font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
Authentication-Anonymous&amp;nbsp;&amp;nbsp; &lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.1263in;"&gt;&lt;div style="color: #1f497d; font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
Read\Write&lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.0256in;"&gt;&lt;div style="color: #1f497d; font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
Read
  only&lt;/div&gt;
&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr&gt;
  &lt;td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 2.0215in;"&gt;&lt;div style="color: #1f497d; font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
Authentication-
  Windows &lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.1263in;"&gt;&lt;div style="color: #1f497d; font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
Read\Write&lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.0256in;"&gt;&lt;div style="color: #1f497d; font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
Read
  only&lt;/div&gt;
&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr&gt;
  &lt;td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 2.0215in;"&gt;&lt;div style="color: #1f497d; font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
Logging&lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.1409in;"&gt;&lt;div style="color: #1f497d; font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
Not
  delegated &lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.0256in;"&gt;&lt;div style="color: #1f497d; font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
Read\Write&lt;/div&gt;
&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr&gt;
  &lt;td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 2.0215in;"&gt;&lt;div style="color: #1f497d; font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
Advanced
  Logging&lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.1263in;"&gt;&lt;div style="color: #1f497d; font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/td&gt;
  &lt;td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.0541in;"&gt;&lt;div style="color: #1f497d; font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
Not
  Delegated&lt;/div&gt;
&lt;/td&gt;
 &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaFm-BIiTttifmSJ6jUFPos-iypgCNZUR8U4HKk_-puFq62yr0OVJTmg5oArADFRZnJf6fPxE6CqlNt9h9eexmI55yYiVayd7fRqGGVYvVj8kGca1f7lwqqRiHZNYnzydv8Th0wf9b3qYu/s1600/iis.PNG" imageanchor="1" style="clear: left; display: inline; float: left; font-size: 11pt; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaFm-BIiTttifmSJ6jUFPos-iypgCNZUR8U4HKk_-puFq62yr0OVJTmg5oArADFRZnJf6fPxE6CqlNt9h9eexmI55yYiVayd7fRqGGVYvVj8kGca1f7lwqqRiHZNYnzydv8Th0wf9b3qYu/s320/iis.PNG" width="304" /&gt;&lt;/a&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaFm-BIiTttifmSJ6jUFPos-iypgCNZUR8U4HKk_-puFq62yr0OVJTmg5oArADFRZnJf6fPxE6CqlNt9h9eexmI55yYiVayd7fRqGGVYvVj8kGca1f7lwqqRiHZNYnzydv8Th0wf9b3qYu/s1600/iis.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-VUwmDbNYUVbYzsd-etWY3pwdR-zRsnlHTH_Au1E3FPyiPVzPpM0NtEFJ79cWUj2eQ1triBGohODYM36e5Qs8a7j_0ZC-vaGd13-XQyqMvBvm1pYsKSo5_CCYckonzV00VYjIbw6MkzIf/s1600/iis2.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="232" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-VUwmDbNYUVbYzsd-etWY3pwdR-zRsnlHTH_Au1E3FPyiPVzPpM0NtEFJ79cWUj2eQ1triBGohODYM36e5Qs8a7j_0ZC-vaGd13-XQyqMvBvm1pYsKSo5_CCYckonzV00VYjIbw6MkzIf/s320/iis2.PNG" width="320" /&gt;&lt;/a&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-VUwmDbNYUVbYzsd-etWY3pwdR-zRsnlHTH_Au1E3FPyiPVzPpM0NtEFJ79cWUj2eQ1triBGohODYM36e5Qs8a7j_0ZC-vaGd13-XQyqMvBvm1pYsKSo5_CCYckonzV00VYjIbw6MkzIf/s1600/iis2.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://www.blogger.com/blogger.g?blogID=1278002805699073381" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: 14.6667px;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;a href="https://www.blogger.com/blogger.g?blogID=1278002805699073381" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style="font-size: 11pt; margin: 0in;"&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-size: 14.6667px;"&gt;
&lt;span style="font-size: 14.6667px;"&gt;Now restart the IIS&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-size: 11pt; margin: 0in;"&gt;
&lt;a href="https://www.blogger.com/blogger.g?blogID=1278002805699073381" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;/a&gt;You can find more information&amp;nbsp; from&amp;nbsp;&lt;a href="http://www.iis.net/learn/manage/managing-your-configuration-settings/an-overview-of-feature-delegation-in-iis#02" target="_blank"&gt;here&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
</description><link>http://skonakanchi.blogspot.com/2016/06/this-configuration-section-cannot-be.html</link><author>noreply@blogger.com (Srinivasa Konakanchi)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaFm-BIiTttifmSJ6jUFPos-iypgCNZUR8U4HKk_-puFq62yr0OVJTmg5oArADFRZnJf6fPxE6CqlNt9h9eexmI55yYiVayd7fRqGGVYvVj8kGca1f7lwqqRiHZNYnzydv8Th0wf9b3qYu/s72-c/iis.PNG" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1278002805699073381.post-1906186383509302497</guid><pubDate>Wed, 08 Jun 2016 00:29:00 +0000</pubDate><atom:updated>2016-06-12T22:00:05.182-04:00</atom:updated><title>.NET coding standards and best practices</title><description>&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;
&lt;span style="font-size: 13.5pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Few months back, I gathered best coding standards for .NET
Developers, and a lot of people found it useful. So, I thought about putting
together a list of Coding Standard guidelines/checklists in one single document.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="margin: 0in 0in 0.0001pt;"&gt;
&lt;span style="font-size: 13.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; As you may already
know, it is easy to come up with a document - the key is in following these
standards in across the organization, through methods like internal trainings,
Peer Reviews, Check in policies, Automated code review tools etc. You can have
a look at FxCop and/or StyleCop for automating the review process to some
extent, and can customize the rules based on your requirements.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0.0001pt;"&gt;
&lt;span style="font-size: 13.5pt;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style="display: block; font-family: &amp;quot;helvetica&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif; font-size: 14px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 12px auto 6px auto;"&gt;
&lt;a href="https://www.scribd.com/doc/315109432/DotNet-Coding-Standards" style="text-decoration: underline;" title="View DotNet Coding Standards on Scribd"&gt;DotNet Coding Standards&lt;/a&gt; by &lt;a href="https://www.scribd.com/user/77879102/Srinivasa-Rao-Konakanchi" style="text-decoration: underline;" title="View Srinivasa Rao Konakanchi's profile on Scribd"&gt;Srinivasa Rao Konakanchi&lt;/a&gt;&lt;/div&gt;
&lt;iframe class="scribd_iframe_embed" data-aspect-ratio="1.2941176470588236" data-auto-height="false" frameborder="0" height="600" id="doc_70" scrolling="no" src="https://www.scribd.com/embeds/315109432/content?start_page=1&amp;amp;view_mode=scroll&amp;amp;access_key=key-DHF1f3QsUTi5NZaKZxCq&amp;amp;show_recommendations=true" width="100%"&gt;&lt;/iframe&gt;</description><link>http://skonakanchi.blogspot.com/2016/06/net-coding-standards-and-best-practices.html</link><author>noreply@blogger.com (Srinivasa Konakanchi)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1278002805699073381.post-2620197122335898272</guid><pubDate>Wed, 11 May 2016 18:23:00 +0000</pubDate><atom:updated>2016-08-11T14:45:37.214-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Report Viewer</category><title>Could not load file or assembly 'Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.</title><description>&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;You will get this error when the Report viewer installed incorrectly or missing in the system&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhMrAMXMzSFJ8cMpt_Ra64AAICTiLU2eT40NxmoPMqoNDWJ9Y9RwR7y1QgOvngzN1OR-POrtzYmdu_DOXaSVpvdoyJxiJgNaY_VyTeOSexVABXbv-l5A8Apaj-xjzLwIkvBLcZvKs5fkNd/s1600/dllError.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhMrAMXMzSFJ8cMpt_Ra64AAICTiLU2eT40NxmoPMqoNDWJ9Y9RwR7y1QgOvngzN1OR-POrtzYmdu_DOXaSVpvdoyJxiJgNaY_VyTeOSexVABXbv-l5A8Apaj-xjzLwIkvBLcZvKs5fkNd/s400/dllError.PNG" width="400" /&gt;&lt;/a&gt;&lt;span style="background-color: white; color: #333333; font-family: &amp;quot;segoe ui&amp;quot; , &amp;quot;lucida grande&amp;quot; , &amp;quot;verdana&amp;quot; , &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: 14px; line-height: 20.162px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; color: #333333; font-family: &amp;quot;segoe ui&amp;quot; , &amp;quot;lucida grande&amp;quot; , &amp;quot;verdana&amp;quot; , &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: 14px; line-height: 20.162px;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="background-color: white; color: #333333; font-family: &amp;quot;segoe ui&amp;quot; , &amp;quot;lucida grande&amp;quot; , &amp;quot;verdana&amp;quot; , &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: 14px; line-height: 20.162px;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="background-color: white; color: #333333; font-family: &amp;quot;segoe ui&amp;quot; , &amp;quot;lucida grande&amp;quot; , &amp;quot;verdana&amp;quot; , &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: 14px; line-height: 20.162px;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="background-color: white; color: #333333; font-family: &amp;quot;segoe ui&amp;quot; , &amp;quot;lucida grande&amp;quot; , &amp;quot;verdana&amp;quot; , &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: 14px; line-height: 20.162px;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="background-color: white; color: #333333; font-family: &amp;quot;segoe ui&amp;quot; , &amp;quot;lucida grande&amp;quot; , &amp;quot;verdana&amp;quot; , &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: 14px; line-height: 20.162px;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="background-color: white; color: #333333; font-family: &amp;quot;segoe ui&amp;quot; , &amp;quot;lucida grande&amp;quot; , &amp;quot;verdana&amp;quot; , &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: 14px; line-height: 20.162px;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="background-color: white; color: #333333; font-family: &amp;quot;segoe ui&amp;quot; , &amp;quot;lucida grande&amp;quot; , &amp;quot;verdana&amp;quot; , &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: 14px; line-height: 20.162px;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: &amp;quot;calibri&amp;quot;; font-size: 14.6667px;"&gt;&lt;b&gt;Solution &lt;/b&gt;:&lt;/span&gt;&lt;span style="background-color: white; color: #333333; font-family: &amp;quot;segoe ui&amp;quot; , &amp;quot;lucida grande&amp;quot; , &amp;quot;verdana&amp;quot; , &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: 14px; line-height: 20.162px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="color: #333333; font-family: &amp;quot;segoe ui&amp;quot; , &amp;quot;lucida grande&amp;quot; , &amp;quot;verdana&amp;quot; , &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;"&gt;&lt;span style="font-size: 14px; line-height: 20.162px;"&gt;Download the&amp;nbsp;Report Viewer&amp;nbsp;installer from below link and this will fix the error&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
Report
viewer 2008 installer link&lt;/div&gt;
&lt;div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
&lt;a href="http://www.microsoft.com/en-us/download/confirmation.aspx?id=6576"&gt;http://www.microsoft.com/en-us/download/confirmation.aspx?id=6576&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;br /&gt;</description><link>http://skonakanchi.blogspot.com/2016/05/could-not-load-file-or-assembly.html</link><author>noreply@blogger.com (Srinivasa Konakanchi)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhMrAMXMzSFJ8cMpt_Ra64AAICTiLU2eT40NxmoPMqoNDWJ9Y9RwR7y1QgOvngzN1OR-POrtzYmdu_DOXaSVpvdoyJxiJgNaY_VyTeOSexVABXbv-l5A8Apaj-xjzLwIkvBLcZvKs5fkNd/s72-c/dllError.PNG" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1278002805699073381.post-8986281316144285507</guid><pubDate>Wed, 13 Apr 2016 17:32:00 +0000</pubDate><atom:updated>2016-09-13T13:43:47.082-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">VS</category><title>How to Force Visual studio to run always in Administrator Mode</title><description>&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Hmm..Every day when I run the visual studio , by default it does not run in Administrator mode. We need to select "run as administrator" every time.I feel it is a kind of routine task. Here is the two possible solutions to avoid this issue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Solution #1:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Windows 7:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;1. Go to Start menu&lt;br /&gt;
&amp;nbsp;2. Right click the Visual Studio icon&lt;br /&gt;
&amp;nbsp;3. Go to Properties&lt;br /&gt;
&amp;nbsp;4. Under the Shortcut tab select Advanced&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgd-RxhxlZSrmbru7wHS-vhFF_18Ac-uN3djfNWBcADm5HW1B-LADAuVGvgMxMbQkfWMiZM8p87V68rbVCRSFvjPJPxmeX9lxleUBh5-36WM6OJLfquHENpexoh2-v3aPvdUiO2tr9HYbGc/s1600/Advance-Settings.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgd-RxhxlZSrmbru7wHS-vhFF_18Ac-uN3djfNWBcADm5HW1B-LADAuVGvgMxMbQkfWMiZM8p87V68rbVCRSFvjPJPxmeX9lxleUBh5-36WM6OJLfquHENpexoh2-v3aPvdUiO2tr9HYbGc/s320/Advance-Settings.PNG" width="250" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;span style="background: white; font-family: &amp;quot;arial&amp;quot;; font-size: 11.25pt;"&gt;5)&amp;nbsp;Check Run as administrator as specified below&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimWngwkeY_DC7CO-AdfWxQTzWYCzl1pbs8uplQh9PZ7J3VXUBKNPb6rwGrFhepl9ZtZlrBv7uqVxQVdNpoiJg4m6jjjt7jQEQpxqaAqAcWPaF7i35RdjMbaZ72rbYYLw5Iu4zU5kKQPLpg/s1600/Capture.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="244" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimWngwkeY_DC7CO-AdfWxQTzWYCzl1pbs8uplQh9PZ7J3VXUBKNPb6rwGrFhepl9ZtZlrBv7uqVxQVdNpoiJg4m6jjjt7jQEQpxqaAqAcWPaF7i35RdjMbaZ72rbYYLw5Iu4zU5kKQPLpg/s320/Capture.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Follow the below instructions for Windows 8:&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;span style="text-align: justify;"&gt;&amp;nbsp;1. Choose "Troubleshoot program"&lt;/span&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp;2. Verify "The program requires additional permissions"&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp;3. Click on &amp;nbsp;"Next", and then click &amp;nbsp;on "Test the program..."&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp;4. wait for the program to launch&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp;5. click on "Next"&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp;6. select "Yes, save these settings for this program"&lt;/div&gt;
&amp;nbsp;7.Click on &amp;nbsp;"Close"&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Solution#2:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; You can also download &lt;a href="https://visualstudiogallery.msdn.microsoft.com/c84be782-b1f1-4f6b-85bb-945ebc852aa1" target="_blank"&gt;VSCommands &lt;/a&gt;by Squared Infinity which has a feature to change it to run as admin It has also has some additional features. Please check it once .&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCn2VIcXWX-ZtPV-z-D0hJZrHB3kEEIb00QlQUrGfQBFn2c1aaDG7QTRuzq6vjO31Ri7EMOP2qKpECEga49v1tQuNoJaGSZKXOrS-wZQZqHnjgG7FkPn2CaanaTi1bOdrLLhzSoAph6oMf/s1600/Capturevse.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="170" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCn2VIcXWX-ZtPV-z-D0hJZrHB3kEEIb00QlQUrGfQBFn2c1aaDG7QTRuzq6vjO31Ri7EMOP2qKpECEga49v1tQuNoJaGSZKXOrS-wZQZqHnjgG7FkPn2CaanaTi1bOdrLLhzSoAph6oMf/s320/Capturevse.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;My Recommendation:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
I prefer Solution#2 because:&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;• It also allows you to easily turn off this functionality.&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;• VSCommands comes with lots of other great features so I always have it installed anyways.&lt;br /&gt;
it's just easier to do than Solution#2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</description><link>http://skonakanchi.blogspot.com/2016/07/how-to-force-visual-studio-to-run.html</link><author>noreply@blogger.com (Srinivasa Konakanchi)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgd-RxhxlZSrmbru7wHS-vhFF_18Ac-uN3djfNWBcADm5HW1B-LADAuVGvgMxMbQkfWMiZM8p87V68rbVCRSFvjPJPxmeX9lxleUBh5-36WM6OJLfquHENpexoh2-v3aPvdUiO2tr9HYbGc/s72-c/Advance-Settings.PNG" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1278002805699073381.post-5361947843425595367</guid><pubDate>Fri, 18 Mar 2016 18:25:00 +0000</pubDate><atom:updated>2016-09-13T13:45:13.051-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">WCF</category><category domain="http://www.blogger.com/atom/ns#">WCF Exception</category><title>Memory gates checking failed because the free memory (373817344 bytes) is less than 5% of total memory.  As a result, the service will not be available for incoming requests.  To resolve this, either reduce the load on the machine or adjust the value of minFreeMemoryPercentageToActivateService on the serviceHostingEnvironment config element.</title><description>&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;I had this problem when i am trying to run the WCF services project in local . It mostly happens when the &amp;nbsp;Memory gates checking failed due to the free memory &amp;nbsp;is less than &amp;nbsp;of total memory&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHNot3SK2TUWg9axCZwSlW3Bjv5kf9vpGuaFcOe0tZDcXLNnyx4ywKedrVwR-4JZyditwVQyK1rAN1E-dgCfPJbqM-LAOcNycaKHKO02xPGIyMH4BXID3Cc8I3gRYfm_O0smxKNPW-cA7B/s1600/WcfMemory.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="176" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHNot3SK2TUWg9axCZwSlW3Bjv5kf9vpGuaFcOe0tZDcXLNnyx4ywKedrVwR-4JZyditwVQyK1rAN1E-dgCfPJbqM-LAOcNycaKHKO02xPGIyMH4BXID3Cc8I3gRYfm_O0smxKNPW-cA7B/s400/WcfMemory.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; As a outcome, the service will not be available for taking the &amp;nbsp;incoming requests. To fix this issue, either reduce the load on the machine or set the zero value for minFreeMemoryPercentageToActivateService in the web.config as specified below&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;pre class="brush: xml"&gt; &lt;servicehostingenvironment aspnetcompatibilityenabled="true" minfreememorypercentagetoactivateservice="0" multiplesitebindingsenabled="true"&gt;
  &lt;/servicehostingenvironment&gt;&lt;/pre&gt;
</description><link>http://skonakanchi.blogspot.com/2016/08/memory-gates-checking-failed-because.html</link><author>noreply@blogger.com (Srinivasa Konakanchi)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHNot3SK2TUWg9axCZwSlW3Bjv5kf9vpGuaFcOe0tZDcXLNnyx4ywKedrVwR-4JZyditwVQyK1rAN1E-dgCfPJbqM-LAOcNycaKHKO02xPGIyMH4BXID3Cc8I3gRYfm_O0smxKNPW-cA7B/s72-c/WcfMemory.png" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1278002805699073381.post-1386895283154123812</guid><pubDate>Wed, 17 Jun 2015 10:42:00 +0000</pubDate><atom:updated>2015-06-17T07:01:06.508-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">TOGAF</category><title>Introduction to Enterprise Architecture Framework And TOGAF</title><description>&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; I am very happy to say that, today i have given an interesting session on Enterprise Architecture Framework and overview of TOGAF 9.1.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Initially i have covered the basics of Enterprise Architecture Framework (What is Enterprise,Architecture, Enterprise Architecture etc..) and later i have focused on how TOGAF help us to define Enterprise Architecture. Most of the time I have taken real time scenarios rather than explaining in theoretical.The overall session went very well with bunch of questions and discussion. &amp;nbsp;Down the line i am planning to take few more session on TOGAF. Here is the presentations .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="-x-system-font: none; display: block; font-family: Helvetica,Arial,Sans-serif; font-size-adjust: none; font-size: 14px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 12px auto 6px auto;"&gt;
&lt;a href="https://www.scribd.com/doc/268928077/Introduction-to-Enterprise-Architecture-Framework-And-TOGAF" style="text-decoration: underline;" title="View Introduction to Enterprise Architecture Framework And TOGAF on Scribd"&gt;Introduction to Enterprise Architecture Framework And TOGAF&lt;/a&gt;&lt;/div&gt;
&lt;iframe class="scribd_iframe_embed" data-aspect-ratio="undefined" data-auto-height="false" frameborder="0" height="600" id="doc_68754" scrolling="no" src="https://www.scribd.com/embeds/268928077/content?start_page=1&amp;amp;view_mode=scroll&amp;amp;show_recommendations=true" width="100%"&gt;&lt;/iframe&gt;</description><link>http://skonakanchi.blogspot.com/2015/06/introduction-to-enterprise-architecture.html</link><author>noreply@blogger.com (Srinivasa Konakanchi)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1278002805699073381.post-4895989523167711767</guid><pubDate>Thu, 04 Jun 2015 10:32:00 +0000</pubDate><atom:updated>2015-06-04T07:06:33.240-04:00</atom:updated><title>Way to get back our windows start button in Windows Server 20012 machines </title><description>&lt;div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
Hey Guys,&lt;/div&gt;
&lt;div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
Are you frustrated
with windows tiles and windows start menu in &amp;nbsp;Windows Server2012 machines.
Here is the software to get back our loved classic windows start button .&lt;/div&gt;
&lt;br /&gt;
Here is the link to download classic shell setup&lt;br /&gt;
&amp;nbsp;&lt;a href="http://www.mediafire.com/download/iwcm97wqp47gjjk/ClassicShellSetup_4_2_1.exe" style="font-family: Calibri; font-size: 11pt;"&gt;&lt;span lang="en-IN"&gt;http://www.mediafire.com/download/iwcm97wqp47gjjk/ClassicShellSetup_4_2_1.exe&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;"&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglrDvMvI6Raq_iJ5MmMIhOKIvDxPQoRIQVaW-kM_eI-Y7UMh5LtaHVBCAVc7FwUWUtNlTlCJ1E_f_XCMPOWgxPj_4IhlNiY2TY3RYL2Q_K-wPABYGPZrHvkuKCDXWsy5Mnf9N8NgTm-efJ/s1600/Untitled.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="351" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglrDvMvI6Raq_iJ5MmMIhOKIvDxPQoRIQVaW-kM_eI-Y7UMh5LtaHVBCAVc7FwUWUtNlTlCJ1E_f_XCMPOWgxPj_4IhlNiY2TY3RYL2Q_K-wPABYGPZrHvkuKCDXWsy5Mnf9N8NgTm-efJ/s400/Untitled.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
</description><link>http://skonakanchi.blogspot.com/2015/06/way-to-get-back-our-windows-start.html</link><author>noreply@blogger.com (Srinivasa Konakanchi)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglrDvMvI6Raq_iJ5MmMIhOKIvDxPQoRIQVaW-kM_eI-Y7UMh5LtaHVBCAVc7FwUWUtNlTlCJ1E_f_XCMPOWgxPj_4IhlNiY2TY3RYL2Q_K-wPABYGPZrHvkuKCDXWsy5Mnf9N8NgTm-efJ/s72-c/Untitled.png" width="72"/><thr:total>0</thr:total></item></channel></rss>