<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>System Integration</title>
        <link>http://www.drowningintechnicaldebt.com/DennisBottjer/category/19.aspx</link>
        <description>System Integration</description>
        <language>en-US</language>
        <copyright>Dennis Bottjer</copyright>
        <generator>Subtext Version 2.1.2.2</generator>
        <item>
            <title>Tampa 2007 Code Camp OBA Slides</title>
            <link>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2007/07/18/tampa-2007-code-camp-oba-slides.aspx</link>
            <description>&lt;p mce_keep="true"&gt;I want to thank everyone who attended my session on Saturday.  I had been sick all week and was still feeling quite run down but we had some great discussions.  Office Business Applications (OBA) are really an excited way to look at developing or extending line-of-business applications.  As promised here are my slides and some important OBA links.&lt;/p&gt;&lt;a href="http://www.drowningintechnicaldebt.com/downloads/OBA_TampCodeCamp2007.ppt" mce_href="http://www.drowningintechnicaldebt.com/downloads/OBA_TampCodeCamp2007.ppt"&gt;Download Tamp 2007 Code Camp OBA Presentation&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=35409d4f-6d3d-4c1c-9390-cc0d70422ad6&amp;amp;displaylang=en"&gt;Supply Chain Management OBA Reference Pack&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msdn2.microsoft.com/en-us/architecture/bb265266.aspx"&gt;Loan Origination Reference Pack&lt;/a&gt;&lt;img src="http://www.drowningintechnicaldebt.com/DennisBottjer/aggbug/70.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>dbottjer</dc:creator>
            <guid>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2007/07/18/tampa-2007-code-camp-oba-slides.aspx</guid>
            <pubDate>Wed, 18 Jul 2007 12:29:00 GMT</pubDate>
            <comments>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2007/07/18/tampa-2007-code-camp-oba-slides.aspx#feedback</comments>
            <wfw:commentRss>http://www.drowningintechnicaldebt.com/DennisBottjer/comments/commentRss/70.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Office Business Applications Architecture Talk With Colin Cole</title>
            <link>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2007/05/24/office-business-applications-architecture-talk-with-colin-cole.aspx</link>
            <description>&lt;p&gt;The following conversation is a conversation with Microsoft Financial Services Sr. Architect Colin Cole discussing Office Business Applications (OBA).  This is a new type of blog post for me and a &lt;a href="http://www.drowningintechnicaldebt.com/" mce_href="http://www.drowningintechnicaldebt.com/"&gt;Drowning In Technical Debt&lt;/a&gt; first.  I hope to conduct similar conversations in the future.  Finally, I would like to thank Colin for making time to have this conversation with me.&lt;br /&gt;&lt;br /&gt;dbottjer says: So I figured a good place to start would be with a definition.  What is OBA?  I did some research and here is what I came up with. Office Business Applications (OBA) use the Microsoft Office Suite of programs (Outlook, Word, Excel, etc) as a presentation layer for connecting line of business applications and executing business processes.&lt;br /&gt;&lt;br /&gt;Colin Cole says: Cool, I have a few more things. &lt;br /&gt;&lt;br /&gt;dbottjer says: Ok great.&lt;br /&gt;&lt;br /&gt;Colin Cole says: OBA is kind of the centerpiece of what we call a "people ready" solution. &lt;br /&gt;&lt;br /&gt;Colin Cole says: It’s really about designing a solution to give the end user more control and agility to interact with the application.  Rather than having the IT defined screens with text boxes and validation. &lt;br /&gt;&lt;br /&gt;dbottjer says: The user has more control to personalize.&lt;br /&gt;&lt;br /&gt;Colin Cole says: You get instead something that brings data down to the tools you're familiar with (as you state), but also have server piece as well and that's where office server (SharePoint) comes in.  By exposing data through something like a SharePoint the business user can define their own reports bring the data down to a cube and open it up in excel.  Slice and Dice.  Create a dashboard. &lt;br /&gt;&lt;br /&gt;dbottjer says: Right&lt;br /&gt;&lt;br /&gt;Colin Cole says: Define their own KPI's.  Etc.  So like you state -- leveraging familiar tools, but also interacting with the solution data as appropriate for their role. &lt;br /&gt;&lt;br /&gt;dbottjer says: So this leads to the Problem. I thought that a good problem definition is: a fundamental inconsistency between how business systems work and how people work.&lt;br /&gt;&lt;br /&gt;Colin Cole says: Agreed&lt;br /&gt;&lt;br /&gt;dbottjer says: Basically applications today are very rigid&lt;br /&gt;&lt;br /&gt;Colin Cole says: Absolutely, take an investment scenario for example.  The investor interacts with the canned application to analyze their portfolio.  But there's always 5-6 things they want to know to make business decisions that aren't available.  So what do they do?  They call IT and ask for a new report.  2 months later they get their report.  But by that time the need is totally different.  &lt;br /&gt;&lt;br /&gt;dbottjer says: Exactly.&lt;br /&gt;&lt;br /&gt;Colin Cole says: So the reality is they don't even bother....and just create their own one-off spreadsheets that aren't reused, etc.&lt;br /&gt;&lt;br /&gt;dbottjer says: So if they have an export feature they could export to Excel and do some quick processing there.&lt;br /&gt;&lt;br /&gt;dbottjer says: But that is an one-off.&lt;br /&gt;&lt;br /&gt;Colin Cole says: Right.&lt;br /&gt;&lt;br /&gt;dbottjer says: So the idea of OBA is just to allow users to work in tools like Excel to begin with an augment excel with the missing services necessary for the problem domain.&lt;br /&gt;&lt;br /&gt;Colin Cole says: Right, as well as interacting with dashboard/reporting type functionality bringing down tasks into Outlook, --like I showed you guys with our lending solution. Stuff like that.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;dbottjer says: I guess this leads us to why use OBA? OBA's offer a familiar interface – Most business users are familiar with at least one or more programs within the Microsoft Office Suite.  For example, Outlook is commonly used groupware that remains open throughout the business day on many corporate desktops.  It would seem like a win-win situation to take advantage of a program that users are already familiar with and that is running on their desktops.  Excel.&lt;br /&gt;&lt;br /&gt;Colin Cole says: Exactly, why not plug a CRM tool into Outlook, since the sales folks are already familiar with the paradigm?&lt;br /&gt;&lt;br /&gt;dbottjer says: OBA integrates line of business applications such as Enterprise Resource Planning (ERP), Customer Relationship Management (CRM), and Supply Chain Management (SCM) in a presentation layer the user is already familiar with and productive in.  For example, a sales associate may depend heavily on Outlook to communicate with his/her clients.  The associate keeps To Do lists within Outlook and a calendar of all meetings.  Integrating the sales associate’s Outlook with CRM would centralize all the company’s customer information.  This would give the sales associate a place to add customer notes and perhaps a way to look up additional customer information such as support cases.&lt;br /&gt;&lt;br /&gt;Colin Cole says: Exactly.&lt;br /&gt;&lt;br /&gt;dbottjer says: So it seems like an efficient model for developing line of business applications? &lt;br /&gt;&lt;br /&gt;Colin Cole says: Right, obviously not for everything, but some % of apps it's a better fit.&lt;br /&gt;&lt;br /&gt;dbottjer says: Something else I noticed is that OBA is a great reuse story. For example, to implement an OBA solution you use an office product like Word, Excel, Outlook, SharePoint, etc. You also can use existing web services. Furthermore, you use VSTO and .NET.&lt;br /&gt;&lt;br /&gt;Colin Cole says: InfoPath plays nicely as well.  Especially the server forms stuff.  Very cool, each InfoPath form can have C# Code Behind, just like aspx.  It makes for a simple model to build professional looking web pages.&lt;br /&gt;&lt;br /&gt;dbottjer says: So OBA is a culmination of technologies to provide a business solution designed for how people work. It seems like OBA's have the potential to have a big impact in the line of business application space. &lt;/p&gt;&lt;img src="http://www.drowningintechnicaldebt.com/DennisBottjer/aggbug/67.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>dbottjer</dc:creator>
            <guid>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2007/05/24/office-business-applications-architecture-talk-with-colin-cole.aspx</guid>
            <pubDate>Thu, 24 May 2007 23:27:00 GMT</pubDate>
            <comments>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2007/05/24/office-business-applications-architecture-talk-with-colin-cole.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://www.drowningintechnicaldebt.com/DennisBottjer/comments/commentRss/67.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Web Services and UTF8Encoded ByteArrays</title>
            <link>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2007/05/01/web-services-utf8encoded-bytearrays.aspx</link>
            <description>&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;Our business partner began reporting all bullet points were being converted to question marks during the archiving of Word Docs.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;An early hunch that perhaps our FTP component was defaulting to ASCII transfer mode instead of Binary proved incorrect.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;With this option ruled out we knew our electronic document repository was properly receiving both the control file and the Word Doc.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;We began to suspect the web service exposed by our application which returns a document and metadata for archiving.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;We were using a byte array to store, in this case, the word document and write it to the http response stream.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;However, we were not specifying the encoding type which was our fatal mistake.&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt" mce_keep="true"&gt;&lt;span class="lnum" /&gt; &lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt" mce_keep="true"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;StringWriter sw = &lt;span class="kwrd"&gt;new&lt;/span&gt; StringWriter();&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;XmlTextWriter xw = &lt;span class="kwrd"&gt;new&lt;/span&gt; XmlTextWriter(sw);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="rem"&gt;// Save Approval Document to Text Writter.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;doc.WriteTo(xw);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&lt;span class="rem"&gt;// Added this line to specify encoding and resolve bullet point issue.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;UTF8Encoding encoding = &lt;span class="kwrd"&gt;new&lt;/span&gt; UTF8Encoding();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;&lt;span class="rem"&gt;// Convert Approval Document To Byte Array.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&lt;span class="kwrd"&gt;byte&lt;/span&gt;[] docAsBytes = encoding.GetBytes(sw.ToString());&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;vvDoc.FileBinary = docAsBytes;&lt;/pre&gt;&lt;/div&gt;&lt;img src="http://www.drowningintechnicaldebt.com/DennisBottjer/aggbug/60.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>dbottjer</dc:creator>
            <guid>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2007/05/01/web-services-utf8encoded-bytearrays.aspx</guid>
            <pubDate>Tue, 01 May 2007 10:06:00 GMT</pubDate>
            <comments>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2007/05/01/web-services-utf8encoded-bytearrays.aspx#feedback</comments>
            <wfw:commentRss>http://www.drowningintechnicaldebt.com/DennisBottjer/comments/commentRss/60.aspx</wfw:commentRss>
        </item>
        <item>
            <title>ADSystemInfo Object Failing</title>
            <link>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2007/01/20/adsysteminfo-object-failing.aspx</link>
            <description>&lt;font face="Arial"&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;Hacking my work laptop seems to be a regular occurrence lately.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;Like most enterprises ours applies active directory policies that affect our machines.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;Some policies make testing beta versions and new releases of software ahead of the official rollouts difficult.&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;After logging into the corporate network, over VPN, I noticed my login scripts weren’t running like they usually do.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;Normally, after a successful connection a message box displays a welcome message.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;Curiosity got the best of me so I ran the script manually and began debugging.&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt" /&gt;&lt;/font&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Arial"&gt;  
&lt;table style="BORDER-RIGHT: #e5e5e5 1px solid; BORDER-TOP: #e5e5e5 1px solid; BORDER-LEFT: #e5e5e5 1px solid; BORDER-BOTTOM: #e5e5e5 1px solid; BACKGROUND-COLOR: #f2f2f2" cellspacing="0" cellpadding="0" width="100%" border="0"&gt;
&lt;tbody&gt;
&lt;tr style="VERTICAL-ALIGN: top; LINE-HEIGHT: normal"&gt;
&lt;td style="WIDTH: 40px; TEXT-ALIGN: right"&gt;&lt;pre style="BORDER-RIGHT: #e7e7e7 1px solid; PADDING-RIGHT: 2px; PADDING-LEFT: 2px; FONT-SIZE: 11px; PADDING-BOTTOM: 2px; MARGIN: 0px; COLOR: gray; PADDING-TOP: 2px; FONT-FAMILY: courier new"&gt;1&lt;br /&gt;2&lt;br /&gt;3&lt;br /&gt;4&lt;br /&gt;5&lt;br /&gt;6&lt;br /&gt;7&lt;br /&gt;8&lt;br /&gt;9&lt;br /&gt;10&lt;br /&gt;11&lt;br /&gt;12&lt;br /&gt;13&lt;br /&gt;14&lt;br /&gt;15&lt;br /&gt;16&lt;br /&gt;17&lt;br /&gt;18&lt;br /&gt;19&lt;br /&gt;20&lt;br /&gt;21&lt;br /&gt;22&lt;br /&gt;23&lt;/pre&gt;&lt;/td&gt;
&lt;td&gt;&lt;pre style="PADDING-RIGHT: 2px; PADDING-LEFT: 8px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-TOP: 2px"&gt;&lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Option Explicit&lt;br /&gt;&lt;br /&gt;Dim Shell, netSys&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Set Shell &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; WScript.CreateObject(&lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"WScript.Shell"&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;Set netSys &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; WScript.CreateObject(&lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"WScript.Network"&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Dim  strUsrDomain&lt;br /&gt;&lt;br /&gt;Dim oInfo, LDAPUsr&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;strUsrDomain=netSys.UserDomain&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;' Some machines have had problems accessing Active Directory information so these section&lt;br /&gt;&lt;br /&gt;' captures any errors and stops the script &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;if&lt;/span&gt; there are any&lt;br /&gt;&lt;br /&gt;Set oInfo &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; CreateObject(&lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"ADSystemInfo"&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;If err.&lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;number&lt;/span&gt; &amp;lt;&amp;gt; 0 Then&lt;br /&gt;&lt;br /&gt;            shell.popup(&lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"Error creating oInfo object "&lt;/span&gt; &amp;amp; e.&lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;description&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;            WScript.quit(1)&lt;br /&gt;&lt;br /&gt;End If&lt;br /&gt;&lt;br /&gt;Set LDAPUsr &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: purple; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;GetObject&lt;/span&gt;(&lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"LDAP://"&lt;/span&gt; &amp;amp; oInfo.UserName)&lt;br /&gt;&lt;br /&gt;If err.&lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;number&lt;/span&gt; &amp;lt;&amp;gt; 0 Then&lt;br /&gt;&lt;br /&gt;            shell.popup(&lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"Error creating LDAPUsr object "&lt;/span&gt; &amp;amp; e.&lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;description&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;            WScript.quit(1)&lt;br /&gt;&lt;br /&gt;End If&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/font&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;font face="Arial"&gt; &lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Arial"&gt;The script was failing while trying to get the username from the oInfo object (oInfo.Username line: 20).&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;I began wondering if the problem was a permissions issue.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;To test my theory I set gave my network login read access to the following DLL’s:&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Arial"&gt; &lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Arial"&gt;AdsLocator.dll&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Arial"&gt;Activeds.dll&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Arial"&gt; &lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Arial"&gt;Finally, I tried running the login script again and it work perfectly. &lt;/font&gt;&lt;/p&gt;&lt;img src="http://www.drowningintechnicaldebt.com/DennisBottjer/aggbug/48.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>dbottjer</dc:creator>
            <guid>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2007/01/20/adsysteminfo-object-failing.aspx</guid>
            <pubDate>Sat, 20 Jan 2007 12:24:00 GMT</pubDate>
            <comments>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2007/01/20/adsysteminfo-object-failing.aspx#feedback</comments>
            <wfw:commentRss>http://www.drowningintechnicaldebt.com/DennisBottjer/comments/commentRss/48.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Registry Scripting</title>
            <link>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2007/01/18/registry-scripting.aspx</link>
            <description>&lt;p&gt;Editing the registry can be a time consuming process.  Sometimes updates or cleanups are easier to perform via a registry script (.reg).   A registry script can be created using note pad.  For a registry script to execute properly the first line needs to be either REGEDIT4 (Windows NT4, Windows 2000, Windows XP) or Windows Registry Editor Version 5.00 (Windows 2K and Windows XP).&lt;/p&gt;
&lt;p&gt;So a script would look like:&lt;/p&gt;
&lt;p&gt;REGEDIT4&lt;/p&gt;
&lt;p&gt;[HKEY_CURRENT_USER\SomeKey]&lt;/p&gt;
&lt;p&gt;"SomeValue" = "ON" &lt;/p&gt;&lt;img src="http://www.drowningintechnicaldebt.com/DennisBottjer/aggbug/46.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>dbottjer</dc:creator>
            <guid>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2007/01/18/registry-scripting.aspx</guid>
            <pubDate>Thu, 18 Jan 2007 10:31:00 GMT</pubDate>
            <comments>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2007/01/18/registry-scripting.aspx#feedback</comments>
            <wfw:commentRss>http://www.drowningintechnicaldebt.com/DennisBottjer/comments/commentRss/46.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Systems Integration: No Assumptions</title>
            <link>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2006/10/31/systems-integration-no-assumptions.aspx</link>
            <description>&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Arial"&gt;There are many sayings about assumptions and I’ll let you fill in your favorite.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;Regarding Systems Integration, the hard lesson I’ve learned is not to assume the other system will properly filter or handle a specific constraint.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;For example, Windows systems use a carriage-return-line-feed to mark the end-of-a-line.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;However, UNIX systems simply use a line-feed to mark the end-of-a-line.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;This is not to say that UNIX systems can’t handle files containing CRLF’s.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;It just means that most UNIX Systems just use an LF to mark the end-of-a-line. &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?&gt;&lt;o:p&gt;&lt;font face="Arial"&gt; &lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Arial"&gt;When writing code to integrate a Windows based system and a UNIX based system that transfers data through a file based feed, noting and handling this simple end-of-line difference can save much time and yes stress.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;Having a simple tool like NotePad2 in your arsenal is a great way to inspect your feed at various stages to ensure compatibility between the systems.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Arial"&gt; &lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Arial"&gt;NotePad2 (&lt;/font&gt;&lt;a href="http://www.flos-freeware.ch/notepad2.html"&gt;&lt;font face="Arial"&gt;http://www.flos-freeware.ch/notepad2.html&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial"&gt;) is a small, powerful replacement editor for “NotePad” which comes with Microsoft Windows.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;This tool is worth a look especially for its ability to show hidden characters such as those marking the end-of-line.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Arial" /&gt; &lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Arial"&gt;To handle the case described above I would recommend implementing a simple scrubber that removes carriage returns (CR's) from the end of each line before sending the file to the UNIX System.  Here is an example scrubber:&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt; &lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;
&lt;/p&gt;&lt;table style="BORDER-RIGHT: #e5e5e5 1px solid; BORDER-TOP: #e5e5e5 1px solid; BORDER-LEFT: #e5e5e5 1px solid; BORDER-BOTTOM: #e5e5e5 1px solid; BACKGROUND-COLOR: #f2f2f2" cellspacing="0" cellpadding="0" width="100%" border="0"&gt;
&lt;tbody&gt;
&lt;tr style="VERTICAL-ALIGN: top; LINE-HEIGHT: normal"&gt;
&lt;td style="WIDTH: 40px; TEXT-ALIGN: right"&gt;&lt;pre style="BORDER-RIGHT: #e7e7e7 1px solid; PADDING-RIGHT: 2px; PADDING-LEFT: 2px; FONT-SIZE: 11px; PADDING-BOTTOM: 2px; MARGIN: 0px; COLOR: gray; PADDING-TOP: 2px; FONT-FAMILY: courier new"&gt;1&lt;br /&gt;2&lt;br /&gt;3&lt;br /&gt;4&lt;br /&gt;5&lt;br /&gt;6&lt;br /&gt;7&lt;br /&gt;8&lt;br /&gt;9&lt;br /&gt;10&lt;br /&gt;11&lt;br /&gt;12&lt;br /&gt;13&lt;br /&gt;14&lt;br /&gt;15&lt;br /&gt;16&lt;br /&gt;17&lt;br /&gt;18&lt;br /&gt;19&lt;br /&gt;20&lt;br /&gt;21&lt;br /&gt; &lt;/pre&gt;&lt;/td&gt;
&lt;td&gt;&lt;pre style="PADDING-RIGHT: 2px; PADDING-LEFT: 8px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-TOP: 2px"&gt;&lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;using&lt;/span&gt; System.IO;&lt;br /&gt;&lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;using&lt;/span&gt; System.Text.RegularExpressions;&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;class&lt;/span&gt; UnixStripperActivity&lt;br /&gt;{&lt;br /&gt;    &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;static&lt;/span&gt; &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/span&gt; SripCarriageReturn(&lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; filePath)&lt;br /&gt;    {&lt;br /&gt;         &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; output;&lt;br /&gt;         FileStream fs &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; File.OpenRead(filePath);&lt;br /&gt;         StreamReader reader &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; StreamReader(fs);&lt;br /&gt;         &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; input &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; reader.ReadToEnd();&lt;br /&gt;         reader.Close();&lt;br /&gt;         fs.Close();&lt;br /&gt;         output &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; Regex.Replace(input, &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;@"\r"&lt;/span&gt;, &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;""&lt;/span&gt;, RegexOptions.Multiline);&lt;br /&gt;         FileStream fsw &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; File.OpenWrite(filePath);&lt;br /&gt;         StreamWriter sw &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; StreamWriter(fsw);&lt;br /&gt;         sw.Write(output);&lt;br /&gt;         sw.Close();&lt;br /&gt;         fsw.Close();&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://www.drowningintechnicaldebt.com/DennisBottjer/aggbug/40.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>dbottjer</dc:creator>
            <guid>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2006/10/31/systems-integration-no-assumptions.aspx</guid>
            <pubDate>Tue, 31 Oct 2006 07:51:00 GMT</pubDate>
            <comments>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2006/10/31/systems-integration-no-assumptions.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://www.drowningintechnicaldebt.com/DennisBottjer/comments/commentRss/40.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>
