<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:rsb="http://www.rssbus.com/ns?RsbOps/v2/" xmlns:ls="http://www.microsoft.com/schemas/rss/core/2005" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/"  xmlns:info="http://www.rssbus.com/ns?RsbOps/v2/anonymous/" xmlns:data="http://www.rssbus.com/ns?RsbOps/v2/anonymous/"><channel>
<ls:treatAs>list</ls:treatAs>
<ls:listinfo>
</ls:listinfo>
<info xmlns:rsb="http://www.rssbus.com/ns?RsbOps/v2/" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" title="default.rsb" methods="" description="">
</info><data:httpmethod>get</data:httpmethod>
<data:useragent>ccbot/1.0 (+http://www.commoncrawl.org/bot.html)</data:useragent>
<info:operation>default.rsb</info:operation>
<description>Featured articles exploring integration through RSSBus technologies.</description>
<generator>/n software RSSBus - http://www.rssbus.com</generator>
<link>http://www.rssbus.com/kb/articles/default.rsb?@html</link>
<title>RSSBus Articles</title>
<item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>Rich Dudley from ComponentOne explores using the RSSBus QuickBooks Data Provider 
		and ComponentOne OLAP to build a powerful QuickBooks reporting application, all without 
		writing a single line of code.</x:description>
<x:keywords>ado, quickbooks, apps, componentone, .net, ado.net</x:keywords>
<description>
&lt;div&gt;
	&lt;i&gt;By &lt;a href=&apos;http://our.componentone.com/author/c1_richd/&apos; target=_blank&gt;Rich Dudley, ComponentOne&lt;/a&gt;, December 6, 2010
	&lt;br&gt;
	&lt;span&gt;This article was originally written and hosted on the &lt;a href=&apos;http://our.componentone.com/2010/12/05/olap-reporting-directly-from-quickbooks-using-rssbus-quickbooks-adapter-and-componentone-olap-for-winforms/&apos; target=&apos;_blank&apos;&gt;ComponentOne Community Site&lt;/a&gt;&lt;/i&gt;&lt;/span&gt;
&lt;/div&gt;&lt;br&gt;

&lt;p&gt;The RSSBus QuickBooks Connector abstracts the
QuickBooks API into a familiar, database-like programming model.  After
installation, the QuickBooks connector is added as an ADO.NET Data Source, and
QB now operates as a database of sorts.  We can query &quot;tables&quot; containing
customer, sales orders, invoice data and more.  Since the data connection
is two-way, we can also update data in QuickBooks from external sources. 
In this blog post, we&apos;ll go through the initial configuration and create a
simple, interactive OLAP view from sales order data.  This will be a
zero-code sample, but future posts will detail more advanced features and will
require some coding.&lt;/p&gt;

&lt;h3&gt;Installing RSSBus QuickBooks Connector&lt;/h3&gt;

&lt;p&gt;In order to program against QuickBooks, the development
machine either needs to have QuickBooks installed, or QuickBooks needs to be
available via a remote connection.  QuickBooks Online is also supported.&lt;/p&gt;

&lt;p&gt;Download the installer from &lt;a
href=&quot;http://www.rssbus.com/ado/quickbooks/&quot;
title=&quot;http://www.rssbus.com/ado/quickbooks/&quot;&gt;http://www.rssbus.com/ado/quickbooks/&lt;/a&gt;,
and run it.  The installer will add the ADO.NET connection to our Data
Source choices, and install a CHM reference file as well as sample projects.&lt;/p&gt;

&lt;p&gt;There are three parts of the package - the System.Data.RSSBus.QuickBooks
library, which we need to reference in our application; the QBConnector.exe,
which is a web service that brokers the connections between our application and
QuickBooks; and a series of schema files we don&apos;t need to adjust, but which may
be updated to adjust for future releases of QuickBooks.&lt;/p&gt;

&lt;p&gt;The first time we connect, we have to have QuickBooks
running and the company file open to approve access to our application. 
Future connections don&apos;t require authorization.&lt;/p&gt;

&lt;h3&gt;Setting Up QuickBooks&lt;/h3&gt;

&lt;p&gt;Before we get started coding, we need to do a little setup
with QuickBooks.  I&apos;m using the &quot;retailer who tracks individual sales&quot;
sample database for this series.  By default, these sample company files
are created without a password.  In order to have external connections to
our company file, we have to set a password.  Open the company file, then
go to Company &amp;gt;&amp;gt; Change My Password to add a password to the file. 
The rest of this demo assumes you&apos;re leaving the User Name as &quot;Admin&quot; - if you
change the User Name, make sure to adjust accordingly below.  Keep track
of this password--you&apos;ll need it to open the company file as well as connect
with our application.&lt;/p&gt;

&lt;img border=0 src=&quot;ado-c1-1.png&quot;&gt;

&lt;p&gt;To allow external connections to our company file, we have
to grant access to our application.  The easiest way to grant these
permissions (as well as test everything is installed correctly) is to run the
sample application first.&lt;/p&gt;

&lt;h3&gt;Running the Sample RSSBus Project&lt;/h3&gt;

&lt;p&gt;The sample project installed with the RSSBus QuickBooks
Connector is useful for testing whether the connector installation and
QuickBooks configuration is correct, as well as being a stand-in application to
set up application access permissions in our company file.&lt;/p&gt;

&lt;p&gt;When using the RSSBus QuickBooks connector,
connections to a QuickBooks company file are handled by an application called
QBConnector.exe, which is installed with the RSSBus QuickBooks
Connector.  QBConnector.exe is a small web service that listens on port
2080 (by default).  We provide some command line attributes to set the
user name, password and application name.  Note that this information is
specific to a single application.  If we want to run multiple applications
against QuickBooks, we need to start multiple instances of the QuickBooks
connector, setting different ports.  We have to have QBConnector.exe
running any time we want to connect to QuickBooks. &lt;/p&gt;

&lt;p&gt;By default, QBConnector.exe is installed in %ProgramFiles%\RSSBus\RSSBus QuickBooks
Data Provider\QBConnector.  There is a readme file which explains the
parameters we can use; the three main ones are the user name, password and
application name.  QBConnector.exe is a command-line application, and when
we start QBConnector (seen below), we need to make sure to include at least these
three parameters.  QBConnector needs to be running on a machine with
QuickBooks and our company file installed, so we either need to run it on a
central machine or distribute it with out applications.&lt;/p&gt;

&lt;img border=0 src=&quot;ado-c1-2.png&quot;&gt;

&lt;p&gt;Now that QBConnector is running, QuickBooks is started and
our company file is open, it&apos;s time to actually connect.  The sample
project can be opened from the Start menu, in the new RSSBus folder. 
Open the sample project, and adjust the connection string in web.config,
setting the password and application name:&lt;/p&gt;

&lt;p&gt;&amp;lt;add name=&amp;quot;QuickBooksConnectionString&amp;quot;
connectionString=&amp;quot;Location=C:\Program Files (x86)\RSSBus\RSSBus QuickBooks
Data Provider\db;URL=http://localhost:2080;Application
Name=QBOlap;user=admin;password=bicycles&amp;quot; providerName=&amp;quot;System.Data.RSSBus.QuickBooks&amp;quot;/&amp;gt;&lt;/p&gt;

&lt;p&gt;Hit F5 and the sample application will start. 
QuickBooks will display an alert.  Choose the &quot;Yes, always; ...&quot; option and
click Continue.&lt;/p&gt;

&lt;img border=0 src=&quot;ado-c1-3.png&quot;&gt;

&lt;p&gt;You&apos;ll be asked to confirm the application&apos;s access:&lt;/p&gt;

&lt;img border=0 src=&quot;ado-c1-4.png&quot;&gt;


&lt;p&gt;And the confirmation will be confirmed.&lt;/p&gt;

&lt;img border=0 src=&quot;ado-c1-5.png&quot;&gt;


&lt;p&gt;While we&apos;re approving access for our application, the sample
app may time out.  That&apos;s OK, stop debugging and rerun and the sample app
should run:&lt;/p&gt;

&lt;img border=0 src=&quot;ado-c1-6.png&quot;&gt;

&lt;p&gt;If there&apos;s data in the grid, we&apos;re good to go.&lt;/p&gt;

&lt;h3&gt;Building the OLAP App&lt;/h3&gt;

&lt;p&gt;We&apos;re in the home stretch now.  This part is going to
seem long, but not really - there is no code, just a lot of configuration
illustrations.&lt;/p&gt;

&lt;p&gt;Open Visual Studio and start a new Windows Forms
application.  On the Data Sources tab, click Add New Data Source. 
Choose a Database type, and click Next.&lt;/p&gt;

&lt;img border=0 src=&quot;ado-c1-7.png&quot;&gt;

&lt;p&gt;Choose Dataset, and click Next.&lt;/p&gt;

&lt;img border=0 src=&quot;ado-c1-8.png&quot;&gt;

&lt;p&gt;Here, we want to create a New Connection.&lt;/p&gt;

&lt;img border=0 src=&quot;ado-c1-9.png&quot;&gt;

&lt;p&gt;Change the data source...&lt;/p&gt;

&lt;img border=0 src=&quot;ado-c1-10.png&quot;&gt;

&lt;p&gt;...select RSSBus QuickBooks Data Source and click
OK.&lt;/p&gt;

&lt;img border=0 src=&quot;ado-c1-11.png&quot;&gt;

&lt;p&gt;Here&apos;s where we configure our data connection.  The
important parameters are&quot;&lt;/p&gt;

&lt;p&gt;Password = the password we set above in our company file &lt;br&gt;
User = the administrative user for our company file (default = admin)&lt;/p&gt;

&lt;p&gt;Application Name = the same application name we used above
when we granted access. &lt;br&gt;
Company File = the full path to the company file (QBW)&lt;/p&gt;

&lt;p&gt;URL = The endpoint for QBConnector.exe.  The default is
http://localhost:2080, but this will need to be updated if running on a local
machine or a different port.&lt;/p&gt;

&lt;p&gt;The Schema Location is optional, this points to the RSD
files which define the structure of the data  in QuickBooks.  Future
changes in QuickBooks may mean future changes to these schema files, and
perhaps these files may become version specific.  At the current time,
these schema files are accurate for all versions from 2006 to current.&lt;/p&gt;

&lt;img border=0 src=&quot;ado-c1-12.png&quot;&gt;

&lt;p&gt;Once we&apos;re done, we can choose to include sensitive data in
the connection string, and we can confirm the connection string as well.&lt;/p&gt;


&lt;img border=0 src=&quot;ado-c1-13.png&quot;&gt;

&lt;p&gt;Save the connection string in the Application Configuration
File.&lt;/p&gt;

&lt;img border=0 src=&quot;ado-c1-14.png&quot;&gt;

&lt;p&gt;Now, we select the database objects to include in the data
set.  Here we&apos;ve selected all the available tables.&lt;/p&gt;

&lt;img border=0 src=&quot;ado-c1-15.png&quot;&gt;

&lt;p&gt;Click Finish.  Visual Studio will import the schema and
generate helper classes, and add Data Adapters to the Toolbox:&lt;/p&gt;

&lt;img border=0 src=&quot;ado-c1-16.png&quot;&gt;

&lt;p&gt;The default framework in Visual Studio is the Client
Framework (a smaller version of .NET), but RSSBus currently needs the
full framework.  To change the framework, right-click on the project, go
Properties &amp;gt;&amp;gt; Compile &amp;gt;&amp;gt; Advanced Compile Options, set Target
Framework to .NET Framework 4.0&lt;/p&gt;

&lt;img border=0 src=&quot;ado-c1-17.png&quot;&gt;

&lt;p&gt;Almost done now!  At this point, except for one small
change, we&apos;re done with the QuickBooks connector configuration.  We&apos;re now
looking at the OLAP for WinForms functionality.  From the toolbox, drag a
C1OlapPanel onto the form.&lt;/p&gt;

&lt;img border=0 src=&quot;ado-c1-18.png&quot;&gt;

&lt;p&gt;Find the SmartTag in the upper right of the C1OlapPanel, and
click it to extend the configuration tasks:&lt;/p&gt;

&lt;img border=0 src=&quot;ado-c1-19.png&quot;&gt;

&lt;p&gt;Make sure QuickBooks and the QBConnector are running and
available, we need them in the next step.&lt;/p&gt;

&lt;p&gt;Choose Data Source &amp;gt;&amp;gt; Other Sources &amp;gt;&amp;gt; Project
Data Sources &amp;gt;&amp;gt; CarlsComputerShop &amp;gt;&amp;gt; Sales Orders (sorry no
screenshot, can&apos;t seem to get one with the SmartTag open).  The field
selector will now populate with fields in Sales Orders &quot;table&quot;.&lt;/p&gt;

&lt;img border=0 src=&quot;ado-c1-20.png&quot;&gt;

&lt;p&gt;The data bindings and adapters will automatically be added
to the form&lt;/p&gt;

&lt;img border=0 src=&quot;ado-c1-21.png&quot;&gt;

&lt;p&gt;Hit F5 and watch the magic!  Our application will
start, and we can now slice-and-dice the Sales Order data.&lt;/p&gt;

&lt;img border=0 src=&quot;ado-c1-22.png&quot;&gt;

&lt;p&gt;Let&apos;s look at total spend, by item, by customer.  Add
Subtotal to the Values listbox, Items to the Row fields listbox, and
CustomerName to the Column Fields listbox.   Our grid will populate,
but what we see is a count, not a dollar amount.  Let&apos;s see if we can
change that to a dollar summary.&lt;/p&gt;

&lt;img border=0 src=&quot;ado-c1-23.png&quot;&gt;

&lt;p&gt;Right-click Subtotal in the Values listbox, and choose Field
Settings.  We see the only option is Count.  There is no option for
Sum, so something is unexpected in how the schema is being interpreted by
Visual Studio.  Cancel out of this.&lt;/p&gt;

&lt;img border=0 src=&quot;ado-c1-24.png&quot;&gt;

&lt;p&gt;This means the data are being interpreted in a way that can
only be counted - usually a string.  Stop debugging, open
CarlsComputerShop.xsd, scroll to find SalesOrders table schema, and highlight
Subtotal.&lt;/p&gt;

&lt;img border=0 src=&quot;ado-c1-24.png&quot;&gt;

&lt;p&gt;Now, open the Properties tab.  We see the DataType is
set to System.String.  Just as we suspected.&lt;/p&gt;

&lt;img border=0 src=&quot;ado-c1-26.png&quot;&gt;

&lt;p&gt;Change the DataType to System.Decimal, rebuild and start
debugging again.&lt;/p&gt;

&lt;img border=0 src=&quot;ado-c1-27.png&quot;&gt;

&lt;p&gt;Using the same field choices, we now have dollar
subtotals!  But let&apos;s format the data for a better presentation.&lt;/p&gt;

&lt;img border=0 src=&quot;ado-c1-28.png&quot;&gt;

&lt;p&gt;To format, right-click Subtotal in the Values listbox,
choose Field Settings &amp;gt;&amp;gt; Format, select Currency and OK.&lt;/p&gt;

&lt;img border=0 src=&quot;ado-c1-29.png&quot;&gt;

&lt;p&gt;Our data are now formatted as currency.&lt;/p&gt;

&lt;img border=0 src=&quot;ado-c1-30.png&quot;&gt;

&lt;p&gt;Another cool feature of the C1OlapPage is the ability to see
the records which were included in the totals.  Right-click any field with
a value above $0, and a new window will open with the included data.&lt;/p&gt;

&lt;img border=0 src=&quot;ado-c1-31.png&quot;&gt;

&lt;p&gt;If we wanted to look at sales by month, rather than by
customer, that&apos;s also very easy.  Replace CustomerName with
TransactionDate in the Column Fields box, and the grid will automatically
rearrange itself.&lt;/p&gt;

&lt;img border=0 src=&quot;ado-c1-32.png&quot;&gt;

&lt;p&gt;By default, this is arranged by day.  To arrange the
data by month, right-click on TransactionDate in the Column Fields box, choose
Field Settings, then the Format tab.  We&apos;ll use a custom date format with
has only the month and year, and click OK.&lt;/p&gt;

&lt;img border=0 src=&quot;ado-c1-33.png&quot;&gt;

&lt;p&gt;The grid is now grouped by month and year.&lt;/p&gt;

&lt;img border=0 src=&quot;ado-c1-34.png&quot;&gt;

&lt;p&gt;That&apos;s not a bad start without writing a line of code! 
To answer the obvious question, yes you can add a combobox so the end user can
select the dataset, we have an example of that in the OLAP for WinForms
documentation (see the product page at &lt;a
href=&quot;http://www.componentone.com/SuperProducts/OLAPWinForms/&quot;
title=&quot;http://www.componentone.com/SuperProducts/OLAPWinForms/&quot; target=_blank&gt;http://www.componentone.com/SuperProducts/OLAPWinForms/&lt;/a&gt;),
and I&apos;ll have some more advanced tutorials here, too.&lt;/p&gt;

&lt;h3&gt;Summary&lt;/h3&gt;

&lt;p&gt;The RSSBus QuickBooks Connector make querying and
updating QuickBooks data as simple as working with a database.  When
combined with the ComponentOne OLAP for WinForms, we have a powerful way to
visualize data.  This was just an introduction to the two components, in
future posts we&apos;ll examine the more advanced features of both components.&lt;/p&gt;

&lt;h3&gt;Resources&lt;/h3&gt;

&lt;p&gt;RSSBus QuickBooks Connector: &lt;a
href=&quot;http://www.rssbus.com/ado/quickbooks/&quot;
title=&quot;http://www.rssbus.com/ado/quickbooks/&quot;&gt;http://www.rssbus.com/ado/quickbooks/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ComponentOne OLAP for WinForms: &lt;a
href=&quot;http://www.componentone.com/SuperProducts/OLAPWinForms/&quot;
title=&quot;http://www.componentone.com/SuperProducts/OLAPWinForms/&quot; target=_blank&gt;http://www.componentone.com/SuperProducts/OLAPWinForms/&lt;/a&gt;&lt;/p&gt;
</description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/ado-c1.rst</guid>
<link>http://www.rssbus.com/kb/articles/ado-c1.rst</link>
<pubDate>Mon, 06 Dec 2010 00:00:00 GMT</pubDate>
<title>OLAP Reporting Directly from QuickBooks using ComponentOne OLAP for WinForms</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>Charts can be essential when it comes to displaying critical information or making decisions based on the most recent information. 
      Using the SalesForce ADO.NET Provider, you can easily chart your SalesForce Data in Visual Studio. This article demonstrates how 
      easy it is to get your SalesForce data and databind it to a chart.</x:description>
<x:keywords>SalesForce, ADO.NET, Pie, Bar, Report, Chart, Data Provider</x:keywords>
<description>
	&lt;p&gt;	    
	    Charts can be essential when it comes to displaying critical information or making decisions based on the most recent information. 
      Using the SalesForce ADO.NET Provider, you can easily chart your SalesForce Data in Visual Studio. This article demonstrates how 
      easy it is to get your SalesForce data and databind it to a chart.
	&lt;/p&gt;
	&lt;p&gt;
		For this example, we will use the Microsoft Charting controls available in .NET 3.5. The exact 
		same procedure outlined below can be used with any &lt;a href=&apos;http://www.rssbus.com/ado/&apos;&gt;RSSBus ADO.NET Data Providers&lt;/a&gt; 
		to chart data from the data source.
	&lt;/p&gt;
	
	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 1:&lt;/b&gt; Open Visual Studio and create a new Windows Forms project. For the purposes of the example, we will be using C#.&lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 2:&lt;/b&gt; Add a Chart control to the Form from the Toolbox.&lt;/li&gt;
	&lt;/ul&gt;
  
	&lt;img src=&apos;ado-chart-sf-1.png&apos; /&gt;
  
	&lt;ul&gt;
    &lt;li&gt;&lt;b&gt;Step 3:&lt;/b&gt; Add a reference to the SalesForce Data Provider.&lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 4:&lt;/b&gt; Create a method to retrieve the data using the SalesForce Data Provider. For example:&lt;/li&gt;
	&lt;/ul&gt;
	&lt;p&gt;
  
	&lt;code lang=&quot;csharp&quot;&gt;&lt;pre&gt;SalesForceConnection conn = new SalesForceConnection(&amp;quot;User=username;Password=password;Access Token=Your_Access_Token;&amp;quot;);
	SalesForceCommand comm = new SalesForceCommand(&amp;quot;SELECT FirstName, AnnualRevenue FROM Lead &amp;quot; +
     &amp;quot;WHERE AnnualRevenue&amp;lt;&amp;gt;NULL AND FirstName&amp;lt;&amp;gt;NULL ORDER BY AnnualRevenue Desc LIMIT 10&amp;quot;, conn);
	SalesForceDataAdapter da = new SalesForceDataAdapter(comm);
	DataSet dataset = new DataSet();
	da.Fill(dataset);&lt;/pre&gt;&lt;/code&gt;
	
	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 5:&lt;/b&gt; DataBind the table of results to the chart.&lt;/li&gt;
	&lt;/ul&gt;
	
	&lt;code lang=&quot;csharp&quot;&gt;&lt;pre&gt;chart1.DataSource = dataset;  
	chart1.Series[0].XValueMember = &amp;quot;FirstName&amp;quot;;
	chart1.Series[0].YValueMembers = &amp;quot;AnnualRevenue&amp;quot;;
	// Insert code for additional chart formatting here.
	chart1.DataBind();&lt;/pre&gt;&lt;/code&gt;
	
	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 6:&lt;/b&gt; You can now run the project and chart your data. The completed chart may look something like this:&lt;/li&gt;
	&lt;/ul&gt;
	
	&lt;img src=&apos;ado-chart-sf-2.png&apos; /&gt;
	
	&lt;h3 class=blue&gt;Chart Sample Project&lt;/h3&gt;
	&lt;p&gt;
	  To help you begin charting using the SalesForce Data Provider, download the fully functional 
		&lt;a href=&quot;ado-chart.zip&quot;&gt;sample project&lt;/a&gt;. You will also need the SalesForce 
		ADO.NET Data Provider to make the connection. You can download a &lt;a href=&quot;../../ado/salesforce&quot;&gt;free trial here&lt;/a&gt;.
    &lt;/p&gt;
    
    &lt;a href=&quot;http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=7579956&quot; rel=&quot;tag&quot; class=hidden&gt;CodeProject&lt;/a&gt;</description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/ado-chart-sf.rst</guid>
<link>http://www.rssbus.com/kb/articles/ado-chart-sf.rst</link>
<pubDate>Tue, 17 Apr 2012 00:00:00 GMT</pubDate>
<title>Charting Data from SalesForce</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>An article from iProgrammer explores accessing Web data through the RSSBus Data Providers: 
        Interacting with websites via the wide range of APIs that are on offer is attractive because it provides 
        new possibilities but is slightly depressing because you have to find out how to do the job all over 
        again for each API. Now there is a better way... </x:description>
<x:keywords>ado, google, apps, gmail, .net, ado.net</x:keywords>
<description>
&lt;div&gt;
	&lt;i&gt;By &lt;a href=&apos;http://www.i-programmer.info/programming/database/1882-accessing-website-data-using-adonet-connectors.html&apos; target=_blank&gt;i-programmer&lt;/a&gt;, January 24, 2011 
	&lt;br&gt;
	&lt;span&gt;This article was originally written and hosted on &lt;a href=&apos;http://www.i-programmer.info/programming/database/1882-accessing-website-data-using-adonet-connectors.html&apos; target=&apos;_blank&apos;&gt;i-programmer&lt;/a&gt;&lt;/i&gt;&lt;/span&gt;
&lt;/div&gt;&lt;br&gt;
&lt;h3&gt;
    Introduction&lt;/h3&gt;
&lt;p&gt;
    Interacting with websites via the wide range of APIs that are on offer is attractive because it provides new 
    possibilities but is slightly depressing because you have to find out how to do the job all over again for each API.&lt;/p&gt;
&lt;p&gt;
    Now there is a better way. &lt;a href=&quot;http://www.rssbus.com/ado/&quot; target=&quot;_blank&quot;&gt;RSSBus&lt;/a&gt; has implemented a range of common APIs 
	as ADO.NET data providers - Google, 
    QuickBooks, Salesforce and SharePoint, with more planned.&lt;/p&gt;
&lt;p&gt;
    What this means is that if you know how to work with databases using ADO.NET there is nothing more to learn. If you 
    don&apos;t know ADO.NET then the good news is that it is easy and generalisable - and so worth learning.&lt;/p&gt;
&lt;p&gt;
    In this article we are going to look at using the Google ADO.NET data provider but the general principles are the same 
    for any ADO.NET data provider. We are are also going to implement a desktop Windows Forms application, but again the 
    principles apply to any platform that can work with ADO.NET - WPF and ASP.NET. This means that you can use the same 
    ideas to implement a desktop or web application.&lt;/p&gt;
&lt;p&gt;
    Getting started with ADO.NET and the Google data provider is made even easier by the use of the designers that Visual 
    Studio has - both the full version and the Express editions. Anything that you can do using one of the designers can be 
    done using nothing but code and in many cases code is the more direct and efficient way to implement things - but when 
    getting started a code generator is often simpler. In this case it also gives you a more powerful strongly typed set of 
    classes to work with.&lt;/p&gt;
&lt;p&gt;
    The Google data provider gives you access to a user&apos;s Google Calendar, Contacts, Docs, email, spreadsheets and more. To 
    make it all work you need to download the Google Data Provider trial edition from &lt;a 
        href=&quot;http://www.rssbus.com/ado/&quot; 
        target=&quot;_blank&quot;&gt;RSSBus&lt;/a&gt;. Simply follow the instructions and install the data provider.&lt;/p&gt;
&lt;h3&gt;
    Connections&lt;/h3&gt;
&lt;p&gt;
    When you next start Visual Studio you can set up a new Google Data source using the Server Explorer. In a real 
    application you would have to arrange to supply the user name and password programmatically, but the simplest way of 
    trying things out is to supply your own Google user name and password - if you don&apos;t have one sign up for a new account, 
    it&apos;s free after all.&lt;/p&gt;
&lt;p&gt;
    Use the Add Connection command and select the RSSBus Google Data Source as the Data Source - if you can&apos;t find this then 
    you haven&apos;t installed the data provider.&lt;/p&gt;
&lt;p&gt;
    In the Add Connection dialog box you simply need to supply the password and user name for the Google account.&amp;nbsp; 
    These will be used to create a connection string which provides the details needed to make the connection to the Google 
    account. Before moving on to work with the connection it is worth clicking the Test Connection button. This should come 
    back with a &amp;quot;Test connection succeeded&amp;quot; message - if not you probably haven&apos;t entered the account details correctly or 
    there is&amp;nbsp; problem with the Internet connection.&lt;/p&gt;
&lt;p&gt;
    If the connection tests OK then you can also run a query to examine the data. further. How to do this is well explained 
    in the online help so let&apos;s move on to look at easy ways of creating some code.&lt;/p&gt;
&lt;p&gt;
    Start a new Windows Forms Application C# application. You can create the same application in much the same way using 
    Visual Basic if you want or and a WPF or ASP.NET project would be created using very similar steps.&lt;/p&gt;
&lt;h3&gt;
    The DataSet Designer&lt;/h3&gt;
&lt;p&gt;
    The next task is to use the DataSet designer to create a TableAdapter which is roughly speaking a DataSet complete with a 
    DataAdapter. However the TableAdapter is more powerful in that it is strongly typed and has some additional methods. 
    This is one time when using a designer is not only easier it actually generates better code.&lt;/p&gt;
&lt;p&gt;
    Select the project, right click and select Add,New Item. When the Add New Item dialog box appears select DataSet - you 
    can call it anything you like but to make clear how things work the default name is used DataSet1 in this example.&lt;/p&gt;
&lt;p&gt;
    &lt;img alt=&quot;Dataset&quot; height=&quot;169&quot; src=&quot;ado-googleaccessingwebsitedata-1.png&quot;  
        width=&quot;300&quot; /&gt;&lt;/p&gt;
&lt;p&gt;
    Once the DataSet has been created you can make use of the DataSet Designer to create the objects you need to work with 
    the database.&lt;/p&gt;
&lt;p&gt;
    Before we do that a quick reminder of how ADO.NET works.&lt;/p&gt;
&lt;p&gt;
    There are a number of .NET classes that represent the data in memory the DataTable being the main one.&lt;/p&gt;
&lt;p&gt;
    There is also a DataAdapter class that makes the connection between the in memory Table and the real database.&lt;/p&gt;
&lt;p&gt;
    The DataAdapter uses a &amp;quot;connection string&amp;quot; to specify the details of the connection.&lt;/p&gt;
&lt;p&gt;
    The new idea in ADO.NET 4 is the TableAdapter. This is a strongly typed DataTable plus a built in DataAdapter. It also 
    has some other useful methods and properties that make is much easier to work with than the simple DataTable and the 
    DataSet Designer is the simplest way of creating one.&lt;/p&gt;
&lt;p&gt;
    If you now look at the RSSBus Google Data Provider in the Server Explorer you will see that there are Feeds, Views and 
    Services. Feeds and Views are essentially data tables with feeds being read/write and views being read-only.&lt;/p&gt;
&lt;p&gt;
    &lt;img alt=&quot;tables&quot; height=&quot;222&quot; src=&quot;ado-googleaccessingwebsitedata-2.png&quot; 
        width=&quot;250&quot; /&gt;&lt;/p&gt;
&lt;p&gt;
    You can see that there are three data tables in the Feeds section - Calendar, Contact/Groups and Contacts.&lt;/p&gt;
&lt;p&gt;
    We are going to connect to the Contacts table because the application is going to provide synchronisation between local 
    and online contacts.&lt;/p&gt;
&lt;p&gt;
    To create a DataAdapter for the Contacts table - simply drag and drop the Contacts table on the DataSet Designer. A 
    default DataTable is created complete with all all of the columns that the Google data uses and a TableAdapter ready to 
    be used to fill the DataTable. You can specify a SQL query as part of the DataAdapter to extract a subset of the 
    records/columns but the default is to extract everything.&lt;/p&gt;
&lt;p&gt;
    There is one small thing that we have to do to make the generated DataAdapter useful in this case. The connection string 
    property has been set but the password has been left out as a security measure. In a real application we are probably 
    going to have to manage the connection string in a more sophisticated way and its general form is:&lt;/p&gt;

&lt;code lang=&quot;csharp&quot;&gt;&lt;pre&gt;Password=&amp;lt;password&amp;gt;;User=&amp;lt;user name&amp;gt;&lt;/pre&gt;&lt;/code&gt;

&lt;p&gt;
    &lt;img alt=&quot;adaptor&quot; height=&quot;214&quot; src=&quot;ado-googleaccessingwebsitedata-3.png&quot; 
        width=&quot;150&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;
    Target Framework&lt;/h3&gt;
&lt;p&gt;
    Now we come to an interesting problem that is trivial but can be a puzzle if you don&apos;t know what is going on. If you try 
    and run or build the the program as-is you will discover that you see an error message which says:&lt;/p&gt;
&lt;p&gt;
    &lt;em&gt;The type or namespace &amp;quot;RSSBus&amp;quot; does not exist in the namespace (are you missing an assembly reference)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;
    No you are not missing an assembly reference and you might be surprised that as the project consists of nothing but 
    generated code&amp;nbsp; is generating an error message.&lt;/p&gt;
&lt;p&gt;
    The reason for the error message is that the project by default is targeting the .NET Framework 4 Client Profile - which 
    is a cut down project type designed to produce a very light weight application. Mostly it is exactly what you want but 
    the ADO.NET application needs some additional assemblies and hence the error message.&lt;/p&gt;
&lt;p&gt;
    To solve the problem and get rid of the error messages all you have to do is use Project Properties and change the 
    Target Framework on the Application tab to ,NET Framework 4.&lt;/p&gt;
&lt;p&gt;
    &lt;img alt=&quot;framework&quot; height=&quot;193&quot; src=&quot;ado-googleaccessingwebsitedata-4.png&quot; 
        width=&quot;300&quot; /&gt;&lt;/p&gt;
&lt;p&gt;
    After this you can build or run the program without any problems and you don&apos;t have to make any manual changes as the 
    warning message that pops up suggests.&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;
    Loading the data&lt;/h3&gt;
&lt;p&gt;
    Once again we have the choice of moving to code or continuing to work with Designers. This time switch to view the form 
    in the Form Designer. At the top of the ToolBox you should see some new controls - DataSet1, ContactTableAdapter and 
    TableAdapterManager.&lt;/p&gt;
&lt;p&gt;
    &lt;img alt=&quot;controls&quot; height=&quot;173&quot; src=&quot;ado-googleaccessingwebsitedata-5.png&quot; 
        width=&quot;290&quot; /&gt;&lt;/p&gt;
&lt;p&gt;
    If you don&apos;t see these controls build or run the project to create them before moving on.&lt;/p&gt;
&lt;p&gt;
    Next simply drag-and-drop an instance of DataSet1 and ContactsTableAdapter onto the form. All this saves us is having to 
    create instances of the default classes and it arguable that there is little to be gained from this way of working but - 
    it can be done.&lt;/p&gt;
&lt;p&gt;
    Now we do have to write some code but not much. As placing the two generated data controls on the form has created 
    dataSet1 and contactsTableAdapter1 we can simply start using them in code.&lt;/p&gt;
&lt;p&gt;
    Place a button on the form so that we can place some code in it&apos;s event handler.&lt;/p&gt;
&lt;p&gt;
    To avoid having to give fully qualified names in the code add:&lt;/p&gt;

&lt;code lang=&quot;csharp&quot;&gt;&lt;pre&gt;using System.Data.RSSBus.Google;&lt;/pre&gt;&lt;/code&gt;

&lt;p&gt;
    to the start of the program.&lt;/p&gt;
&lt;p&gt;
    We need to set the connection string so that the DataAdapter can connect to the &amp;quot;database&amp;quot; i.e. the Google users name 
    and password:&lt;/p&gt;
	
&lt;code lang=&quot;csharp&quot;&gt;&lt;pre&gt;contactsTableAdapter1.Connection = new GoogleConnection(
	&amp;quot;Password=password;User=username&amp;quot;);&lt;/pre&gt;&lt;/code&gt;

&lt;p&gt;
    We also need a DataTable of the right sort to store the records from the Google Contacts database. You can use a basic 
    DataTable for this job but why do this when a strongly typed DataTable has been generated for you by the designer.&lt;/p&gt;
&lt;p&gt;
    To create an instance of this strongly typed DataTable we have to use the DataSet:&lt;/p&gt;

&lt;code lang=&quot;csharp&quot;&gt;&lt;pre&gt;DataSet1.ContactsDataTable MyTable=  new DataSet1.ContactsDataTable();&lt;/pre&gt;&lt;/code&gt;

&lt;p&gt;
    Now we can fill the new table:&lt;/p&gt;

&lt;code lang=&quot;csharp&quot;&gt;&lt;pre&gt;contactsTableAdapter1.Fill(MyTable);&lt;/pre&gt;&lt;/code&gt;

&lt;p&gt;
    The TableAdapter also has a GetData method which simply returns a DataTable of the correct type complete with data:&lt;/p&gt;

&lt;code lang=&quot;csharp&quot;&gt;&lt;pre&gt;DataSet1.ContactsDataTable MyTable = contactsTableAdapter1.GetData();&lt;/pre&gt;&lt;/code&gt;

&lt;p&gt;
    At this point MyTable contains a set of record objects each record object has properties corresponding to the columns of 
    the table and they are all of the correct type. This is the advantage of using a strongly typed DataTable.&lt;/p&gt;
&lt;p&gt;
    So for example to get the FullName of the first record we could use:&lt;/p&gt;

&lt;code lang=&quot;csharp&quot;&gt;&lt;pre&gt;string name=MyTable[0].FullName;&lt;/pre&gt;&lt;/code&gt;

&lt;p&gt;
    Notice that now we have a strongly typed table to get its advantages we have to use a strongly typed Row object.&lt;/p&gt;
&lt;p&gt;
    For example to step thought the collection with a for each loop using a general DataRow type you would have to write 
    something like:&lt;/p&gt;

&lt;code lang=&quot;csharp&quot;&gt;&lt;pre&gt;foreach (DataRow row in MyTable) {
	name = (string) row[&amp;quot;FullName&amp;quot;];
}&lt;/pre&gt;&lt;/code&gt;

&lt;p&gt;
    Notice tht you have use an index to retrieve the field and you have to cast it to the correct data type - string.&lt;/p&gt;
&lt;p&gt;
    Now compare this to the strongly typed way of doing the same job:&lt;/p&gt;

&lt;code lang=&quot;csharp&quot;&gt;&lt;pre&gt;foreach(DataSet1.ContactsRow row in MyTable) {
	name = row.FullName;
}&lt;/pre&gt;&lt;/code&gt;

&lt;p&gt;
    This works with a FullName property which is already a string so no cast is needed.&lt;/p&gt;
&lt;p&gt;
    Once you have seen this sort of coding in action you should have no problem in understanding that it is&amp;nbsp; a much 
    better way to work.&lt;/p&gt;
&lt;h3&gt;
    Update&lt;/h3&gt;
&lt;p&gt;
    Now we come to the more difficult problem of updating a table. One the DataTable is loaded with data using the Fill or 
    GetData methods you can work with the rows collection in the usual way. That is you can modify the data, delete rows 
    etc. with out having to worry about what is happening to the data stored in the database or in the Google account in 
    this case. However what if you want to update the external data with the changes you have made in memory?&lt;/p&gt;
&lt;p&gt;
    This is where the TableAdapters Update method comes into play. In principle the Update method should be generated 
    automatically when you create the TableAdapter but in most cases it finds it too difficult and leaves the method 
    undefined. Fortunately it is fairly easy to create an Update method manually.&lt;/p&gt;
&lt;p&gt;
    The key is to supply a SQL command that performs the update. To do this you have to supply a WHERE clause that matches 
    up the data in the DataTable with the data in the database. In most cases the WHERE simply matches records on the key 
    value. You also need a SET clause which stores the new data in the fields you want to change. So for example:&lt;/p&gt;

&lt;code&gt;&lt;pre&gt;UPDATE table
SET field1=value1
WHERE (key=value2)&lt;/pre&gt;&lt;/code&gt;

&lt;p&gt;
    This will perform an update on table and will change only the record with key=value2 and it will change&amp;nbsp; field1 to 
    value1.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
    This easy enough but the TableAdapter will apply an UPDATE command to every record in the row collection clearly the 
    UPDATE command has to use variables not constants to indicate what each field is to be updated to. What ADO.NET does is 
    to introduce variables indicated by an @ at the front of the row property name. So for example, each ContactsRow object 
    has a FullName property and to update the external record you would use something like&lt;/p&gt;

&lt;code&gt;&lt;pre&gt;UPDATE Contacts
SET FullName=@FullName
WHERE (Editlink=@Editlink)&lt;/pre&gt;&lt;/code&gt;

&lt;p&gt;
    This will update the Contacts table matching up in memory records that have changed to table records that need to be 
    changed by matching Edltlink to the Editlink property - which is the key for this table and so unique. Once the in 
    memory and table records are matched the FullName field is updated by the contents of the FullName property of the row 
    object.&lt;/p&gt;
&lt;p&gt;
    To create the Update method open the DataSet editor and examint he properties of the ContactsTableAdapter. Click on 
    Update command and select New. Next enter the SQL command as listed above and that&apos;s all you have to do.&lt;/p&gt;
&lt;p&gt;
    &lt;img alt=&quot;Update&quot; height=&quot;236&quot; src=&quot;ado-googleaccessingwebsitedata-6.png&quot;         
        width=&quot;300&quot; /&gt;&lt;/p&gt;
&lt;p&gt;
    You can now write code like:&lt;/p&gt;

&lt;code lang=&quot;csharp&quot;&gt;&lt;pre&gt;MyTable[0].FullName = &amp;quot;I Programmer&amp;quot;;
contactsTableAdapter1.Update(MyTable);&lt;/pre&gt;&lt;/code&gt;

&lt;p&gt;
    and the Google contacts data table will be updated. Of course there is always the possibility that the update will fail 
    for one reason or another so use a Try-Catch.&lt;/p&gt;
&lt;p&gt;
    Notice that only the FullName field is updated even if you change other fields in the in memory record. To change other 
    fields simply add them to the SQL command.&lt;/p&gt;
&lt;h3&gt;
    Where next&lt;/h3&gt;
&lt;p&gt;
    You should be able to extend the ideas explained in this article to other tables in the Google provider and even to 
    other providers. It is a neat approach to working with web APIs. The DataSet Designer also makes life easier and more 
    reliable. You can use its strongly typed DataSets to work with both LINQ and the Entity Framework but in most cases 
    simply getting, modifying and updating data is all you need and ADO.NET on its own does this very well. It really is 
    only worth thinking of more complex approaches when joins and intertable relationships have to be handled.&lt;/p&gt;
</description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/ado-googleaccessingwebsitedata.rst</guid>
<link>http://www.rssbus.com/kb/articles/ado-googleaccessingwebsitedata.rst</link>
<pubDate>Mon, 24 Jan 2011 00:00:00 GMT</pubDate>
<title>Accessing website data using ADO.NET</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>Are you looking for a quick and easy way to access your 
		Google Docs from PowerShell?  The Google Data Provider provides a 
		simple, easy-to-use ADO.NET interface that you can take advantage of 
		from your PowerShell Scripts. Simply use the included SQL like .NET 
		objects (GoogleConnection, GoogleCommand, GoogleDataAdapter, etc) in 
		your PowerShell scripts to connect to your Google Apps accounts and 
		synchronize, automate, download, and more!</x:description>
<x:keywords>ado, google, apps, docs, powershell, ado.net</x:keywords>
<description>
&lt;p&gt;	
	Are you looking for a quick and easy way to access your Google Docs from PowerShell?  The 
	&lt;a href=&apos;http://www.rssbus.com/ado/google/&apos;&gt;Google Data Provider&lt;/a&gt; provides an easy-to-use 
	ADO.NET interface that you can take advantage of with your PowerShell Scripts. Simply use the included SQL 
	like .NET objects (GoogleConnection, GoogleCommand, GoogleDataAdapter, etc) in your PowerShell scripts to 
	connect to your Google Apps accounts and synchronize, automate, download, and more!
&lt;/p&gt;

&lt;h3&gt;Using the Google Data Provider in PowerShell to List Google Docs:&lt;/h3&gt;

&lt;code lang=powershell&gt;&lt;pre&gt;# Load the Google Data Provider assembly 
[Reflection.Assembly]::LoadFile(&amp;quot;C:\Program Files\RSSBus\RSSBus Google Data Provider\lib\System.Data.RSSBus.Google.dll&amp;quot;)

# Connect to Google 
$constr = &amp;quot;User=[username];Password=[password]&amp;quot;
$conn= New-Object System.Data.RSSBus.Google.GoogleConnection($constr)
$conn.Open()

$sql=&amp;quot;SELECT Name, AuthorName, Type, Updated, Weblink from Documents&amp;quot;

$da= New-Object System.Data.RSSBus.Google.GoogleDataAdapter($sql, $conn)
$dt= New-Object System.Data.DataTable
$da.Fill($dt)

$dt.Rows | foreach {
	Write-Host $_.updated $_.name
}&lt;/pre&gt;&lt;/code&gt;

&lt;p&gt;
	Listing is only the first step. With full CRUD support, you can use the Google Data Provider to 
	easily upload and download documents as well.  The following bit of PowerShell code downloads one 
	of the documents listed above:
&lt;/p&gt;

&lt;h3&gt;Download a file from Google Docs:&lt;/h3&gt;

&lt;code lang=powershell&gt;&lt;pre&gt;$cmd= New-Object System.Data.RSSBus.Google.GoogleCommand(&amp;quot;DownloadDocument&amp;quot;, $conn)
$cmd.CommandType= [System.Data.CommandType]&amp;#39;StoredProcedure&amp;#39;
$cmd.Parameters.Add( (New-Object System.Data.RSSBus.Google.GoogleParameter(&amp;quot;@Type&amp;quot;, &amp;quot;TXT&amp;quot;)) ) 
$cmd.Parameters.Add( (New-Object System.Data.RSSBus.Google.GoogleParameter(&amp;quot;@Name&amp;quot;, &amp;quot;myfile&amp;quot;)) ) 
$cmd.Parameters.Add( (New-Object System.Data.RSSBus.Google.GoogleParameter(&amp;quot;@LocalFile&amp;quot;, &amp;quot;d:\myfile.txt&amp;quot;)) ) 
$reader = $cmd.ExecuteReader()&lt;/pre&gt;&lt;/code&gt;

&lt;p&gt;
	Likewise, calling the &lt;b&gt;&lt;i&gt;UploadDocument&lt;/i&gt;&lt;/b&gt; stored procedure allows your scripts to 
	upload documents directly to Google Docs.
&lt;/p&gt;

&lt;br&gt;
&lt;p&gt;
	As you can see, the &lt;a href=&apos;http://www.rssbus.com/ado/google/&apos;&gt;Google Data Provider&lt;/a&gt; provides a hassle-free way to access the features of Google Apps directly from PowerShell script, and eliminates 
	the headache involved with authentication, security, etc.  Happy scripting!
&lt;/p&gt;
	
	&lt;a href=&quot;http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=7579956&quot; rel=&quot;tag&quot; class=hidden&gt;CodeProject&lt;/a&gt;  
	</description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/ado-googlepowershell.rst</guid>
<link>http://www.rssbus.com/kb/articles/ado-googlepowershell.rst</link>
<pubDate>Thu, 03 Mar 2011 00:00:00 GMT</pubDate>
<title>Use PowerShell to List Google Docs</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>Mike Gold reviews the RSSBus Google Data Provider on C# Corner: This is a review of a component called the 
		RSSBus Google Data Provider which allows you to access the Google API through a SQL-like 
		Data Provider interface. This provider opens up the entire Google Application Suite to the .NET developer 
		through familiar ADO.NET tools and classes</x:description>
<x:keywords>ado, google, apps, gmail, .net, ado.net</x:keywords>
<description>
&lt;div&gt;
	&lt;i&gt;By &lt;a href=&apos;http://www.c-sharpcorner.com/Authors/AuthorDetails.aspx?AuthorID=mgold&apos; target=_blank&gt;Mike Gold&lt;/a&gt;, November 30, 2010 
	&lt;br&gt;
	&lt;span&gt;This article was originally written and hosted on &lt;a href=&apos;http://www.c-sharpcorner.com/UploadFile/mgold/4473/&apos; target=&apos;_blank&apos;&gt;c-sharp corner&lt;/a&gt;&lt;/i&gt;&lt;/span&gt;
&lt;/div&gt;&lt;br&gt;
&lt;h3&gt;
    Introduction&lt;/h3&gt;
&lt;p&gt;
    The world is full of information and there are all kinds of ways to access it. The Microsoft .NET framework provides 
    several convenient ways to access data from different data sources, whether it&apos;s an XML file, a web stream, or a 
    database. For databases, Microsoft offers several techniques for retrieving the data. One of the simplest forms is 
    through an ADO.NET Data Provider. The Data Provider architecture gives us an easy way to extract data from a table and 
    put it in an in-memory data structure called a DataSet. ADO.NET also provides a way to perform other common database 
    tasks such as querying the data or calling stored procedures. If you have used ADO.NET in the past, you are probably 
    familiar with using a Data Provider to control data inside a database. But what if you want to access data that is not 
    available in a database? What if you want to find data that is inside your Google account? Is there a way to access 
    Google account data through the ADO.NET mechanism many of us are already using? Fortunately the answer is a resounding 
    &quot;yes!&quot;. That choice is available through the &lt;a href=&quot;http://rssbus.com/ado/&quot;&gt;RSSBus Google Data Provider&lt;/a&gt;, which works 
    like any other Data Provider, as you will soon find out.&lt;/p&gt;
&lt;h3&gt;
    &lt;b&gt;Installing the Software&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;
    Installing the RSSBus Google DataProvider walks you through like most wizards these days. Just launch the executable and 
    follow the steps. The only unusual part is that you are prompted for the registration keys twice: once from the web when 
    downloading the installer, and again while running the executable. When I asked the company about the dual registration, 
    RSSBus has indicated that customers are provided with direct links and a customer would only have to enter the serial 
    number and registration key once.&lt;/p&gt;
&lt;p&gt;
    You are also required to run a registry file for desktop applications. Because this is a developer application, the 
    registry file is not too inconvenient, but it should probably be made more transparent in the future. In the case of ASP.NET apps, RSSBus has alternative licensing available 
    that does not require registry access for deployment such as shared server support.&lt;/p&gt;

&lt;h3&gt;
    &lt;b&gt;The Data Provider Schema&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;
    The RSSBus Google Provider is laid out similarly to a SqlServer database with Tables, Views, and Stored Procedures. 
    Tables consist of Calendar, ContactGroups, and Contacts which gives you access to Google&apos;s online calendar and contacts. 
    Views consist of Google Docs which consist of Documents, MailMessages, SpreadSheets, and Worksheets. As you can see, the 
    Views give you access to practically every other Google online application including GoogleDocs and Gmail. The stored 
    procedures also supply a rich set of tools to use with Google applications enabling you to perform functions like a 
    Google search, or to export GoogleDocs to Microsoft Word.&lt;/p&gt;
&lt;h3&gt;
    &lt;b&gt;Using the Data Provider&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;
    Once the DataProvider is installed, it works just like a Sql Data Provider.This is great, because you can access the 
    RSSBus Google Provider directly from Server Explorer, giving you all the drag and drop magic you are used to with other 
    Data Providers. For example, you can create a new connection to a Google account simply by choosing the RSSBus Data 
    Source as shown in figure 1:&lt;/p&gt;

&lt;p align=&quot;center&quot; class=&quot;small&quot;&gt;
    &lt;img alt=&quot;ado-hookingintogoogleapps-1.jpg&quot; border=&quot;0&quot; height=&quot;295&quot; src=&quot;ado-hookingintogoogleapps-1.jpg&quot; width=&quot;518&quot; /&gt;
    &lt;b&gt;Figure 1 - Choosing the RSSBus Google Data Source in Server Explorer&lt;/b&gt;
&lt;/p&gt;

&lt;p&gt;
    Then you can create a connection as you would any other Sql Connection; you just use your Google account credentials 
    instead:&lt;/p&gt;

&lt;p align=&quot;center&quot; class=&quot;small&quot;&gt;
    &lt;img alt=&quot;ado-hookingintogoogleapps-2.jpg&quot; border=&quot;0&quot; height=&quot;494&quot;  src=&quot;ado-hookingintogoogleapps-2.jpg&quot; width=&quot;356&quot; /&gt;
    &lt;b&gt;Figure 2 - Filling in the Google Account Information&lt;/b&gt;
&lt;/p&gt;

&lt;p&gt;
    Once you hit&lt;b&gt; Test Connection &lt;/b&gt;and 
    it succeeds, you are all hooked up to Google and ready to go. You can immediately examine your data through Server 
    Explorer and begin to imagine all the cool applications you can create for Google users. For example, the RSSBus Google 
    Provider shows all my contact information from Google if I right click on contacts and retrieve the data:&lt;/p&gt;

&lt;p align=&quot;center&quot; class=small&gt;
    &lt;img alt=&quot;ado-hookingintogoogleapps-3.jpg&quot; border=&quot;0&quot; height=&quot;586&quot; src=&quot;ado-hookingintogoogleapps-3.jpg&quot; width=&quot;472&quot; /&gt;
    &lt;b&gt;Figure 3 - Retrieving Contact Data Directly from a Google Account in Server Explorer&lt;/b&gt;
&lt;/p&gt;

&lt;p&gt;
    I could easily drag the Contacts table onto a Windows Form and bind it to a Data Grid, giving me an instant application 
    that allowed me to organize my contact information from Google. Or I could create an ASP.NET web page that does the same 
    thing. Although I don&apos;t know if I&apos;d want to share all my Google contacts with the world, I could filter just those 
    contacts I wanted to make available through a password protected site. Consider another scenario: Let&apos;s say I wanted to 
    list all the people in my company&apos;s sales department on a page on the web. I could use the RSSBus Google Data Provider 
    to query just the contacts in my sales ContactGroup and put them in the sales page. Anytime I hired new salesman (or 
    lost an existing salesman), I could just change my Google ContactGroups and the page would auto-magically update itself 
    to reflect the new information. You might say, &amp;quot;Well I can just as well do that in a database&amp;quot;. That&apos;s true, 
    but if you are using the convenient web interface of 
    Google to change contacts all the time, this is a way more convenient solution.&lt;/p&gt;
&lt;h3&gt;
    &lt;b&gt;Query Limitations&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;
    Before delving further into an example of using the RSSBus Google Provider, it&apos;s important to understand that there are 
    limitations to what you can do with a non-database provider as opposed to a provider that internally calls the Google 
    API.&lt;span&gt;&amp;nbsp;&lt;/span&gt;Here are some of them:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;span&gt;Table joins are not supported.&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;Table aliases are not supported.&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;GROUP BY, HAVING, ORDER BY clauses and nested statements are not 
        supported at the time of this article (though the developers assured me that support for these queries will be available 
        soon).&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;Scalar or aggregation functions are not supported.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
    The Data Provider does support Selects and Where clauses. Fortunately, this would be sufficient most of the time because 
    I can manipulate the items above through LINQ once I have the requested data from the RSSBus Data Provider. &lt;/p&gt;
&lt;h3&gt;
    &lt;b&gt;The Code&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;
    If you are already familiar with using the Sql Data Provider, than using the RSSBus Google Data Provider is fairly 
    straightforward. Listing 1 is a snippet from RSSBus&apos;s sample code for connecting Google Calendar Data to a Grid in your 
    ASP.NET web page:&lt;/p&gt;
&lt;p&gt;
    &lt;b&gt;&lt;u&gt;Listing 1 - Binding the RSSBus DataSource to a GridView in ASP.NET&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;

&lt;code&gt;&lt;pre&gt;&amp;lt;asp:GridView ID=&amp;quot;gvCustomers&amp;quot; runat=&amp;quot;server&amp;quot; AutoGenerateColumns=&amp;quot;False&amp;quot;
	DataSourceID=&amp;quot;GoogleDataSource&amp;quot; BorderStyle=&amp;quot;Dotted&amp;quot; BorderWidth=&amp;quot;2px&amp;quot;
	CellPadding=&amp;quot;3&amp;quot; CellSpacing=&amp;quot;3&amp;quot;&amp;gt;
	&amp;lt;Columns&amp;gt;
		&amp;lt;asp:BoundField DataField=&amp;quot;where&amp;quot; HeaderText=&amp;quot;Where&amp;quot; SortExpression=&amp;quot;where&amp;quot; /&amp;gt;
		&amp;lt;asp:BoundField DataField=&amp;quot;authoremail&amp;quot; HeaderText=&amp;quot;AuthorEmail&amp;quot; SortExpression=&amp;quot;authoremail&amp;quot; /&amp;gt;
		&amp;lt;asp:BoundField DataField=&amp;quot;description&amp;quot; HeaderText=&amp;quot;Description&amp;quot; SortExpression=&amp;quot;description&amp;quot; /&amp;gt;
		&amp;lt;asp:BoundField DataField=&amp;quot;endtime&amp;quot; HeaderText=&amp;quot;EndTime&amp;quot; SortExpression=&amp;quot;endtime&amp;quot; /&amp;gt;
		&amp;lt;asp:BoundField DataField=&amp;quot;starttime&amp;quot; HeaderText=&amp;quot;StartTime&amp;quot; SortExpression=&amp;quot;starttime&amp;quot; /&amp;gt;
		&amp;lt;asp:BoundField DataField=&amp;quot;id&amp;quot; HeaderText=&amp;quot;Id&amp;quot; ReadOnly=&amp;quot;True&amp;quot; SortExpression=&amp;quot;id&amp;quot; /&amp;gt;
		&amp;lt;asp:BoundField DataField=&amp;quot;title&amp;quot; HeaderText=&amp;quot;Title&amp;quot; SortExpression=&amp;quot;title&amp;quot; /&amp;gt;
	&amp;lt;/Columns&amp;gt;
&amp;lt;/asp:GridView&amp;gt;
&amp;lt;asp:SqlDataSource ID=&amp;quot;GoogleDataSource&amp;quot; runat=&amp;quot;server&amp;quot;
	ConnectionString=&amp;quot;&amp;lt;%$ ConnectionStrings:GoogleConnectionString %&amp;gt;&amp;quot;
	ProviderName=&amp;quot;&amp;lt;%$ ConnectionStrings:GoogleConnectionString.ProviderName %&amp;gt;&amp;quot;
	SelectCommand=&amp;quot;SELECT * FROM [Calendar.rsd]&amp;quot;&amp;gt;
&amp;lt;/asp:SqlDataSource&amp;gt;&lt;/pre&gt;&lt;/code&gt;

&lt;p&gt;Remember: You will also need to list the connection string in the  web.config file:&lt;/p&gt;

&lt;code&gt;&lt;pre&gt;&amp;lt;add name=&amp;quot;GoogleConnectionString&amp;quot; connectionString=&amp;quot;Location=C:\Program Files (x86)\RSSBus\RSSBus Google Data Provider\db;User=mgold45@gmail.com;Password=csharpcornerrocks&amp;quot; providerName=&amp;quot;System.Data.RSSBus.Google&amp;quot;/&amp;gt;&lt;/pre&gt;&lt;/code&gt;

&lt;p&gt;
    As you can see, there is little difference between binding a Sql Server data source and a RSSBus Data Source. The only detail that I didn&apos;t recognize in the sample code is 
    that the table name has an rsd extension, but removing the extension did not seem to affect the application. Figure 4 
    shows part of the resulting page with the minimum coding shown in Listing 1.&lt;/p&gt;
&lt;div class=&quot;grid small&quot; style=&quot;width:90%&quot;&gt;
&lt;table&gt;
    &lt;tr&gt;
        &lt;td valign=&quot;bottom&quot; width=&quot;86&quot;&gt;
                &lt;b&gt;Where&lt;/b&gt;
        &lt;/td&gt;
        &lt;td valign=&quot;bottom&quot; width=&quot;27&quot;&gt;
                &lt;b&gt;AuthorEmail&lt;/b&gt;
        &lt;/td&gt;
        &lt;td valign=&quot;bottom&quot; width=&quot;189&quot;&gt;
                &lt;b&gt;Description&lt;/b&gt;
        &lt;/td&gt;
        &lt;td valign=&quot;bottom&quot; width=&quot;87&quot;&gt;
                &lt;b&gt;EndTime&lt;/span&gt;&lt;/b&gt;
        &lt;/td&gt;
        &lt;td valign=&quot;bottom&quot; width=&quot;87&quot;&gt;
                &lt;b&gt;StartTime&lt;/b&gt;
        &lt;/td&gt;
        &lt;td valign=&quot;bottom&quot; width=&quot;27&quot;&gt;
                &lt;b&gt;Id&lt;/b&gt;
        &lt;/td&gt;
        &lt;td valign=&quot;bottom&quot; width=&quot;116&quot;&gt;
                &lt;b&gt;Title&lt;/b&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td 
            valign=&quot;top&quot; width=&quot;86&quot;&gt;
            &lt;p&gt;
                Liberal Arts and Science Academy (LASA) 
                HS at 7309 Lazy Creek Drive,. Austin, TX 78724&lt;/span&gt;&lt;/p&gt;
        &lt;/td&gt;
        &lt;td 
            valign=&quot;top&quot; width=&quot;27&quot;&gt;
            &lt;p&gt;
                mgold45@gmail.com&lt;/span&gt;&lt;/p&gt;
        &lt;/td&gt;
        &lt;td 
            valign=&quot;top&quot; width=&quot;189&quot;&gt;
            &lt;p 
                &gt;
                Hi Bob, Just wanted to pass this on as an 
                opportunity for the Robot Club here in Austin. Best, -Mike (an education based community service announcement) What : 
                Judges Needed for FIRST LEGO League (FLL) Robotics Tournament When : Saturday, November 13th &amp;amp; Sunday, November 14th 7AM 
                - 5PM (Volunteer one day or both days) Where : Liberal Arts and Science Academy (LASA) HS at 7309 Lazy Creek Drive,. 
                Austin, TX 78724 On Saturday, November 13 and Sunday, November 14th, 2010, the Liberal Arts and Scienc... P&lt;/span&gt;&lt;/p&gt;
        &lt;/td&gt;
        &lt;td 
            valign=&quot;top&quot; width=&quot;87&quot;&gt;
            &lt;p&gt;
                11/14/2010 12:00:00 AM&lt;/p&gt;
        &lt;/td&gt;
        &lt;td 
            valign=&quot;top&quot; width=&quot;87&quot;&gt;
            &lt;p&gt;
                11/13/2010 12:00:00 AM&lt;/p&gt;
        &lt;/td&gt;
        &lt;td 
            valign=&quot;top&quot; width=&quot;27&quot;&gt;
            &lt;p&gt;
                http://www.Google.&lt;/p&gt;
        &lt;/td&gt;
        &lt;td 
            valign=&quot;top&quot; width=&quot;116&quot;&gt;
            &lt;p&gt;
                Judges Needed for FIRST LEGO League (FLL) 
                Robotics Tournament&lt;/p&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p align=&quot;center&quot; class=&quot;small&quot;&gt;&lt;b&gt;
    Figure 4 - The Google Calendar Data Displayed in a GridView bound to the RSSBus Google Data Provider&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;
    Let&apos;s look at a C# example in a Windows Form Application. Figure 5 is a sample Google Docs app supplied with the RSSBus 
    demo. This begins to show us the range of capabilities provided by RSSBus for writing desktop apps.&lt;/p&gt;
	
&lt;p align=&quot;center&quot; class=small&gt;
	&lt;img alt=&quot;ado-hookingintogoogleapps-4.jpg&quot; border=&quot;0&quot; height=&quot;402&quot; src=&quot;ado-hookingintogoogleapps-4.jpg&quot; width=&quot;624&quot; /&gt;
    &lt;b&gt;Figure 5 - A Google Docs Windows Form App&lt;/b&gt;
&lt;/p&gt;

&lt;p&gt;
    Now let&apos;s examine the code behind this Google App. Again, if you understand how to use a Sql Provider in ADO.NET and the 
    rich class set in ADO.NET, then the learning curve for access to Google Docs is not steep.
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;u&gt;Listing 2 - ADO.NET code in a Windows Form to Display Google Doc List&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;

&lt;code lang=&quot;csharp&quot;&gt;&lt;pre&gt;private BindingSource GoogleDocsSource = new BindingSource();
private string connectionString;
private GoogleDataAdapter dataAdapter = new GoogleDataAdapter();
private string selectCommand = &amp;quot;SELECT Name,AuthorName,Kind,Updated,Weblink from Docs&amp;quot;;
 
private void GetData() {
   
	try {
		Cursor.Current = Cursors.WaitCursor;
		dgvDocs.DataSource = GoogleDocsSource;
		GoogleConnection conn = new GoogleConnection(connectionString);
		dataAdapter = new GoogleDataAdapter(selectCommand, conn);
		GoogleCommandBuilder commandBuilder = new GoogleCommandBuilder(dataAdapter);
		dataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
		DataTable table = new DataTable();
		dataAdapter.Fill(table);
		GoogleDocsSource.DataSource = table;
		dgvDocs.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
      
	} catch (Exception ex) {
		MessageBox.Show(ex.Message);
      
	} finally {
		Cursor.Current = Cursors.Default;
	}
}&lt;/pre&gt;&lt;/code&gt;

&lt;p&gt;
    Notice that we fill a DataTable just like we would in any other Sql Data Provider application. We create a connection 
    with the GoogleConnection object, passing it a connection string. We then create an adapter that takes a query string 
    and the connection object. We use the adapter to fill a data table and then we bind the data table to a data grid.&lt;/p&gt;
&lt;p&gt;
    The Google RSSBus Provider also has a set of stored procedures that provide additional features for extracting your 
    online Google Docs. Listing 3 illustrates the use of a stored procedure that allows you to download a Google doc into 
    other file formats. I was impressed by the number of formats the stored procedure supported through the underlying 
    Google API. For example, for spreadsheets it supports exporting into txt, csv, and even xls format. For documents it 
    supports exporting into pdf, doc, rtf, odt, and html format. Listing 4 illustrates how simple it is to call the 
	&lt;span class=blue&gt;ExportGoogleDoc&lt;/span&gt; stored procedure from the RSSBus Google Data Provider.&lt;/p&gt;
&lt;p&gt;
    &lt;b&gt;&lt;u&gt;Listing 4 - Exporting a Document from Google Docs to the Desktop&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;

&lt;code lang=&quot;csharp&quot;&gt;&lt;pre&gt;try {
	SaveFileDialog saveDialog = new SaveFileDialog();
	saveDialog.Filter = &amp;quot;All Files (*.*)|*.*|CSV (*.csv)|*.csv|DOCX (*.docx)|*.docx|HTM (*.htm)|*.htm|HTML (*.html)|*.html|PDF (*.pdf)|*.pdf|PPT (*.ppt)|*.ppt|TXT (*.txt)|*.txt|XLSX (*.xlsx)|*.xlsx&amp;quot;;
	saveDialog.Title = &amp;quot;Select the location to download.&amp;quot;;
	saveDialog.FileName = dgvDocs.Rows[dgvDocs.SelectedCells[0].RowIndex].Cells[&amp;quot;Name&amp;quot;].Value.ToString();
	saveDialog.RestoreDirectory = true;
	if (saveDialog.ShowDialog() == DialogResult.OK) {
		Cursor.Current = Cursors.WaitCursor;
		GoogleConnection conn = new GoogleConnection(connectionString);
		GoogleCommand cmd = new GoogleCommand(&amp;quot;ExportGoogleDoc&amp;quot;, conn);
		cmd.CommandType = CommandType.StoredProcedure;
		cmd.Parameters.Add(new GoogleParameter(&amp;quot;Type&amp;quot;, new System.IO.FileInfo(saveDialog.FileName).Extension.Substring(1)));
		cmd.Parameters.Add(new GoogleParameter(&amp;quot;Name&amp;quot;, dgvDocs.Rows[dgvDocs.SelectedCells[0].RowIndex].Cells[&amp;quot;Name&amp;quot;].Value.ToString()));
		cmd.Parameters.Add(new GoogleParameter(&amp;quot;LocalFile&amp;quot;, saveDialog.FileName));
		cmd.ExecuteNonQuery();
		MessageBox.Show(&amp;quot;File Downloaded.&amp;quot;);
	}    
} catch (Exception ex) {
	MessageBox.Show(ex.Message);
    
} finally {
	Cursor.Current = Cursors.Default;
}&lt;/pre&gt;&lt;/code&gt;
&lt;br/&gt;

&lt;p&gt;
    As you may have deduced from figure 5, you can also use the provider to upload documents from your desktop to Google. 
    For example, you could probably create a Word Add-In that seamlessly exports your word documents to your Google account. 
    The import stored procedure code to call &lt;span class=blue&gt;UploadGoogleDoc&lt;/span&gt; is implemented in much the same way as the export procedure code since it is 
    using the same techniques to call a stored procedure using ADO.NET. The upload procedure just requires a path to the 
    local file you are uploading as a parameter.&lt;/p&gt;
&lt;p&gt;
    &lt;b&gt;&lt;u&gt;Listing 3 - Importing a Document into Google&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;

&lt;code lang=&quot;csharp&quot;&gt;&lt;pre&gt;try {
	OpenFileDialog openDialog = new OpenFileDialog();
	openDialog.Filter = &amp;quot;All Files (*.*)|*.*&amp;quot;;
	openDialog.Title = &amp;quot;Select a file to upload.&amp;quot;;
	openDialog.RestoreDirectory = true;
	if (openDialog.ShowDialog() == DialogResult.OK) {
		Cursor.Current = Cursors.WaitCursor;
		GoogleConnection conn = new GoogleConnection(connectionString);
		GoogleCommand cmd = new GoogleCommand(&amp;quot;UploadGoogleDoc&amp;quot;, conn);
		cmd.CommandType = CommandType.StoredProcedure;
		cmd.Parameters.Add(new GoogleParameter(&amp;quot;LocalFile&amp;quot;, openDialog.FileName));
		cmd.ExecuteNonQuery();
		GetData();
	}
	
} catch (Exception ex) {
	MessageBox.Show(ex.Message);
	
} finally {
	Cursor.Current = Cursors.Default;
}&lt;/pre&gt;&lt;/code&gt;
&lt;br/&gt;

&lt;h3&gt;
    &lt;b&gt;Caching&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;
    You&apos;ll notice when using the provider that it can sometimes be a little slow due to the inherent latency of the 
    underlying Google API. The RSSBus Provider comes with some caching functionality to help speed up performance. The cache 
    allows the Data Provider to query against a local database on the user&apos;s machine. The RSSBus Data Provider allows you to 
    explicitly cache data by use of the CACHE statement. Alternatively, you can set the RSSBus Data Provider to auto-cache 
    by setting AutoCache to true in your connection string.The RSSBus Data Provider also provides a third caching option 
    called offline. In offline caching, the user can execute all CRUD statements against the user&apos;s local cached database. 
    To use offline mode, just set offline to true in your connection string:&lt;/p&gt;

&lt;code lang=&quot;csharp&quot;&gt;&lt;pre&gt;GoogleConnection myConnection = new GoogleConnection(&amp;quot;Location=/mydb;Offline=true;User=foo@gmail.com;Password=password&amp;quot;);&lt;/pre&gt;&lt;/code&gt;
&lt;br/&gt;
&lt;p&gt;
    &lt;b&gt;The QuickBooks RSSBus Data Provider&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;
    The Google Data Provider is not the only software that RSSBus provides. There is also an RSSBus QuickBooks Provider. The 
    QuickBooks provider gives us the same convenient ADO.NET rich class set for querying and manipulating the data inside of 
    QuickBooks. With the Provider the user has access to the all of the following QuickBooks Schema Components: Accounts, 
    Bills, Checks, CreditMemos, Customers, Invoices, JournalEntries, PurchaseOrders, SalesOrders, SalesReceipts, and 
    Vendors. The stored procedures in the RSSBus for QuickBooks allow you to search for particular transactions. This is 
    useful if you want to find transactions for a particular account or find transactions that fall within a particular date 
    range. Like the RSSBus Data Provider for Google, the QuickBooks has an offline and caching option as well. In the 
    QuickBooks Data Provider, you can also provide a URL in the connection string if you want to communicate with QuickBooks 
    remotely.&lt;/p&gt;
&lt;h3&gt;
    &lt;b&gt;Conclusion&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;
    If you are a .NET programmer, you often find yourself looking for solutions to problems that allow you to leverage the 
    .NET framework. If you have a project that requires you to manipulate data in a Google account or a group of Google 
    accounts, the Google RSSBus Data Provider gives you an easy way to use what you already know. With RSSBus you can use 
    ADO.NET and SQL to manipulate all of the applications available on Google. Whether it&apos;s for the desktop or the web, you 
    can use this convenient mechanism to create Google-enhanced applications. If you are curious to experiment with the 
    RSSBus for either Google or QuickBooks, you can &lt;a href=&quot;http://rssbus.com/ado/&quot;&gt;download&lt;/a&gt; a trial version and give it a 
    try from the RSSBus website. The cost of the Google RSSBus Data Provider is $299 as of this writing. The QuickBooks 
    RSSBus Data Provider is $399. Once you purchase the components, they are royalty free to distribute with your 
    application. If you are looking for a well-organized component for exercising the rich online applications provided by 
    Google, your&lt;i&gt; search &lt;/i&gt;is over: RSSBus gives you everything you need to mine the Google landscape.&lt;/p&gt;
</description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/ado-hookingintogoogleapps.rst</guid>
<link>http://www.rssbus.com/kb/articles/ado-hookingintogoogleapps.rst</link>
<pubDate>Tue, 30 Nov 2010 00:00:00 GMT</pubDate>
<title>Hooking into Google Apps With RSSBus Google Data Provider</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>This article walks through the process of deploying a LightSwitch application that uses 
		any of the RSSBus ADO.NET Data Providers to a new host.</x:description>
<x:keywords>LightSwitch, ADO.NET, Data Provider, publish</x:keywords>
<description>
	
	&lt;p&gt;This article walks through the process of deploying a LightSwitch application that uses any of the RSSBus ADO.NET Data Providers to a new host.&lt;/p&gt;
	
	&lt;p&gt;
	There is a problem in deploying a LightSwitch application to another server or Web host. It does not automatically port some of the settings and dependencies needed for it to work on a machine different from the one it was developed on. 
    If you are using a custom ADO.NET Data Provider
    such as &lt;a href=&quot;../../ado/&quot;&gt;our ADO.NET Data Providers&lt;/a&gt;, then your dlls and &amp;lt;system.data&amp;gt; config settings will
		not be added to the finished product. Here is what you need to do to get it to work on the new machine.
	&lt;/p&gt;
	
	&lt;h3 class=blue&gt;Modify the Web.config&lt;/h3&gt;
	
    &lt;p&gt;
        On your local machine, there is a machine.config file where your Data Providers are registered. You will
		need to copy some settings from this file into your web.config file.
    &lt;/p&gt;

	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 1:&lt;/b&gt; Open a window and browse to C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config.&lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 2:&lt;/b&gt; Open machine.config with a text editor.&lt;/li&gt;
        &lt;li&gt;&lt;b&gt;Step 3:&lt;/b&gt; Search this file for the &amp;lt;system.data&amp;gt; section. It should look like this:&lt;/li&gt;
    &lt;/ul&gt;

&lt;code lang=xml&gt;&lt;pre&gt;&amp;lt;system.data&amp;gt;
	&amp;lt;DbProviderFactories&amp;gt;
		  ...
		&amp;lt;add name=&amp;quot;RSSBus QuickBooks Data Provider&amp;quot; .../&amp;gt;
		  ...
    &amp;lt;/DbProviderFactories&amp;gt;
&amp;lt;/system.data&amp;gt;&lt;/pre&gt;&lt;/code&gt;

    &lt;ul&gt;
        &lt;li&gt;&lt;b&gt;Step 4:&lt;/b&gt; Add the full system.data section to the web.config file in your published 
		LightSwitch application.
		&lt;li&gt;&lt;b&gt;Step 5:&lt;/b&gt; Remove all ADO.NET Data Providers that your application does not use or 
		that come installed with Visual Studio.&lt;/li&gt;
	&lt;/ul&gt;
	
	&lt;h3 class=blue&gt;Add Missing DLLs&lt;/h3&gt;
	
    &lt;ul&gt;
        &lt;li&gt;&lt;b&gt;Step 1:&lt;/b&gt; In your published LightSwitch application, add any missing dll files to the bin
		directory. These must be .NET 4.0 dlls.&lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 2:&lt;/b&gt; For example, if you are using the &lt;a href=&quot;../../ado/quickbooks/&quot;&gt;RSSBus QuickBooks Data
		Provider&lt;/a&gt;, you would need to add the System.Data.RSSBus.QuickBooks and System.Data.RSSBus.QuickBooks.Entities 
		dlls. These can be found in C:\Program Files (x86)\RSSBus\RSSBus QuickBooks Data Provider\lib\4.0&lt;/li&gt;
	&lt;/ul&gt;
		</description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/ado-lightswitch-publish.rst</guid>
<link>http://www.rssbus.com/kb/articles/ado-lightswitch-publish.rst</link>
<pubDate>Wed, 23 Mar 2011 00:00:00 GMT</pubDate>
<title>Publishing LightSwitch Applications</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>Integrate Visual Studio LightSwitch applications with QuickBooks.  This example shows how to display QuickBooks entries in LightSwitch using the QuickBooks ADO.NET Data Provider.</x:description>
<x:keywords>LightSwitch, QuickBooks, ADO.NET, Entity Framework</x:keywords>
<description>
	&lt;p&gt;
    The RSSBus Data Providers for ADO.NET include out-of-the-box support for Microsoft Visual Studio LightSwitch.  
		In this demo, we will show you how to create a LightSwitch application that connects with QuickBooks and displays 
	  QuickBooks account data through the &lt;a href=&apos;http://www.rssbus.com/ado/quickbooks/&apos;&gt;QuickBooks ADO.NET Data Provider&lt;/a&gt;. 
		This exact same procedure outlined below can be used with any &lt;a href=&apos;http://www.rssbus.com/ado/&apos;&gt;RSSBus ADO.NET Data Providers&lt;/a&gt; to integrate 
		data with LightSwitch applications. 		
	&lt;/p&gt;
	
  &lt;h3 class=&quot;blue&quot;&gt;Before We Begin&lt;/h3&gt;
  &lt;p&gt;
    QuickBooks provides no connectivity to its data over a network. RSSBus provides a utility called the Remote 
    Connector that allows our QuickBooks ADO.NET Data Provider to communicate with QuickBooks across remotely. The
    Remote Connector must be installed and running on the host QuickBooks machine before completing this tutorial. Find
    more about setting up the Remote Connector at 
    &lt;a href=&quot;http://www.rssbus.com/kb/help/RQR2-A/pg_remoteconnector.rst&quot;&gt;this&lt;/a&gt; help page on our website.
  &lt;/p&gt;
  
	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 1:&lt;/b&gt; Open Visual Studio and create a new LightSwitch Project.&lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 2:&lt;/b&gt; Add a new Data Source of type &quot;Database&quot;.&lt;/li&gt;
        &lt;li&gt;&lt;b&gt;Step 3:&lt;/b&gt; Change the data source to an RSSBus QuickBooks Data Source.&lt;/li&gt;
        &lt;li&gt;&lt;b&gt;Step 4:&lt;/b&gt; Enter the connection details for your QuickBooks machine. In this example, we are using a separate
		machine to host QuickBooks on.&lt;/li&gt;
	&lt;/ul&gt;
	
	&lt;img src=&apos;ado-lightswitch-1.png&apos; /&gt;
	
	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 5:&lt;/b&gt; Once you have your connection details set, select the tables and views you would like to add to the project.&lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 6:&lt;/b&gt; Now add a screen to the project. While adding the screen, select which table or view to associate with 
		the screen. In our example we are using a Grid screen and the Accounts table.&lt;/li&gt;
	&lt;/ul&gt;
	
	&lt;img src=&apos;ado-lightswitch-2.png&apos; /&gt;
	
	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 7:&lt;/b&gt; Run the LightSwitch application. The screen will automatically execute and populate with data.&lt;/li&gt;
	&lt;/ul&gt;
	
	&lt;img src=&apos;ado-lightswitch-3.png&apos; /&gt;
	
		&lt;h3 class=blue&gt;LightSwitch Sample Project&lt;/h3&gt;
	
	&lt;p&gt;
	     To help you with getting started using the QuickBooks Data Provider within Visual Studio LightSwitch, download
	    a &lt;a href=&quot;ado-lightswitch.zip&quot;&gt;sample project&lt;/a&gt;. You will also need the QuickBooks
	    ADO.NET Data Provider to make the connection. You can download a &lt;a href=&quot;../../ado/quickbooks&quot;&gt;free trial here&lt;/a&gt;.
    &lt;/p&gt;
    
    &lt;p&gt;
        Note: Before running the demo, you will need to change your connection details. Right-click on the QuickBooks
        Data Source and select &lt;b&gt;Update Data Source&lt;/b&gt;. In the wizard window that pops up, click the &lt;b&gt;Previous&lt;/b&gt;
        button, and enter the connection details for your QuickBooks host.
    &lt;/p&gt;
	
	&lt;a href=&quot;http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=7579956&quot; rel=&quot;tag&quot; class=hidden&gt;CodeProject&lt;/a&gt;  	</description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/ado-lightswitch.rst</guid>
<link>http://www.rssbus.com/kb/articles/ado-lightswitch.rst</link>
<pubDate>Wed, 06 Apr 2011 00:00:00 GMT</pubDate>
<title>Connect to QuickBooks From LightSwitch Applications</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>LINQ provides general-purpose query facilities in the .NET Framework 3.0 and above and provides one easy way to 
		programmatically access data through from RSSBus Data Providers for ADO.NET.  This example uses LINQ to access 
		information from the QuickBooks Data Provider.</x:description>
<x:keywords>LINQ, QuickBooks, ADO.NET, data provider, entity framework</x:keywords>
<description>
	&lt;p&gt;	    
	    In this demo, we will demonstrate how to use LINQ to access tables in QuickBooks through the 
		&lt;a href=&apos;http://www.rssbus.com/ado/quickbooks/&apos;&gt;QuickBooks ADO.NET Data Provider&lt;/a&gt;.
	    To do this we will LINQ to Entity Framework, which is used to generate the connection and 
		can be used with any &lt;a href=&apos;http://www.rssbus.com/ado/&apos;&gt;RSSBus ADO.NET Data Providers&lt;/a&gt; to access 
		data via LINQ.
	&lt;/p&gt;
	
	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 1:&lt;/b&gt; Open Visual Studio and create a new project.&lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 2:&lt;/b&gt; Right click on the project and choose to add a new item. Select to add an ADO.NET Entity Data Model.&lt;/li&gt;
	&lt;/ul&gt;
	
	&lt;img src=&apos;ado-linqtoef1.png&apos; /&gt;
	
	&lt;ul&gt;
        &lt;li&gt;&lt;b&gt;Step 3:&lt;/b&gt; Choose to generate from database and click next.&lt;/li&gt;
        &lt;li&gt;&lt;b&gt;Step 4:&lt;/b&gt; Add a new Data Connection, and change your data source type to &quot;RSSBus QuickBooks Data Source&quot;.&lt;/li&gt;
        &lt;li&gt;&lt;b&gt;Step 5:&lt;/b&gt; Enter your data source connection information.&lt;/li&gt;
	&lt;/ul&gt;
	
	&lt;img src=&apos;ado-linqtoef2.png&apos; /&gt;
	
	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 6:&lt;/b&gt; If saving your entity connection to App.Config, set an entity name. In this example we are setting QuickBooksEntities
		as our entity connection to App.Config.&lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 7:&lt;/b&gt; Select any tables or views you would like to include in the model in addition to a model name.&lt;/li&gt;
	&lt;/ul&gt;
	
	&lt;img src=&apos;ado-linqtoef3.png&apos; /&gt;
	
	&lt;p&gt; Using the entity you created in Step 6, you can now perform Select, Update, Delete, and Insert 
		commands. For example:
	&lt;/p&gt;
&lt;code lang=csharp&gt;&lt;pre&gt;QuickBooksEntities qbeContext = new QuickBooksEntities();

var invoiceQuery = from invoice in qbeContext.Invoices
	orderby invoice.CustomerName
	select invoice;

foreach (var result in invoiceQuery) {
	Console.WriteLine(&amp;quot;{0} {1} &amp;quot;, result.ID, result.CustomerName);
}&lt;/pre&gt;&lt;/code&gt;
	
	&lt;a href=&quot;http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=7579956&quot; rel=&quot;tag&quot; class=hidden&gt;CodeProject&lt;/a&gt;  </description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/ado-linqtoef.rst</guid>
<link>http://www.rssbus.com/kb/articles/ado-linqtoef.rst</link>
<pubDate>Thu, 07 Apr 2011 00:00:00 GMT</pubDate>
<title>LINQ to QuickBooks</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>RSSBus Data Providers offer a wide range of uses, including the ability to migrate data between sources
    quickly and painlessly. Download this demo that helps you transfer Salesforce.com data into SharePoint.</x:description>
<x:keywords>Security, SSL, Authtoken, tips</x:keywords>
<description>
  
&lt;h1&gt;Easy Data Migration from Salesforce to SharePoint&lt;/h1&gt;

&lt;p&gt;RSSBus Data Providers are development tools that simplify a large variety of tasks. In this demo we will show how you
can use the RSSBus data providers to transfer data from one source to another.&lt;/p&gt;

&lt;p&gt; Migrating data between sources is often tedious, but this is made simpler by using the RSSBus data providers which
abstract out vendor-specific API&apos;s into a standard interface. Mapping columns from source to destination can in fact 
take as little as a dozen lines of code.&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;ado-migration-demo.zip&quot;&gt;Salesforce.com to SharePoint Migration Assistant&lt;/a&gt; demonstrates how RSSBus Data Providers convert data from source
to destination in an orderly process: enter your credentials, select the tables you want to migrate, map the columns, 
and &lt;em&gt;go&lt;/em&gt;. The code in the demo is also highly modifiable. Since all the Data Providers use a common interface, changing 
the source or destinations to something else (e.g., QuickBooks, Google) is a matter of replacing the providers.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;ado-migration.png&quot; alt=&quot;Screen shot&quot; title=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This sample is just a simple demo where we copy every row in the source table to the destination. Several improvements can be made that make this more robust. As an example it is possible to update the destination with only the most recently 
modified data in the source. Implementing this is matter of altering the query the demo uses to pull down data from the
source by adding to it some sort of condition.&lt;/p&gt;

&lt;a href=&quot;http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=7579956&quot; rel=&quot;tag&quot; class=hidden&gt;CodeProject&lt;/a&gt;  
</description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/ado-migration.rst</guid>
<link>http://www.rssbus.com/kb/articles/ado-migration.rst</link>
<pubDate>Wed, 04 Jan 2012 00:00:00 GMT</pubDate>
<title>Demo: Migrate Data from Salesforce to SharePoint</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>Pseudo columns behave like normal columns and are used to refine data by passing them through Where clauses.  This 
  tutorial will show you how to expose a Data Provider&amp;apos;s pseudo columns such as MaxResults.</x:description>
<x:keywords>Pseudo Column, Column, ado, ADO.NET, tips</x:keywords>
<description>

&lt;p&gt;
	There are a number of ways that you might want to refine your query results that are difficult to do with current table columns;
  pseudo columns can greatly simplify this.  This example shows how to set up a connection using any of the RSSBus ADO.NET data 
  providers and	how to expose pseudo columns.
&lt;/p&gt;
	
&lt;p&gt;
	First install the RSSBus product(s) you have purchased.  After running the setup, open an instance
	of Visual Studio LightSwitch.  In this tutorial we will make a C# LightSwitch application with the Salesforce 
	Data Provider.	
&lt;/p&gt;
&lt;h3 class=&quot;blue&quot;&gt;What are pseudo columns?&lt;/h3&gt;
&lt;p&gt;
Pseudo columns are used in &lt;b&gt;WHERE&lt;/b&gt; clauses just like regular columns but are not present in any table.  As an 
example you could create a 
&lt;b&gt;SELECT&lt;/b&gt; statement with a psuedo column like this:
&lt;/p&gt;
&lt;code lang=csharp&gt;&lt;pre&gt;SELECT * FROM Accounts WHERE maxresults=&amp;#39;10&amp;#39;&lt;/pre&gt;&lt;/code&gt;
&lt;p&gt;
Passing the pseudo columns to the data provider allows for more granular control over the rows that get returned.  Since 
they are special entities for Tables and Views they do not exist in the data table returned and cannot be read.  For a list 
of the pseudo columns available with a particular Table or View confer with the help file supplied with the RSSBus Data 
Provider.  The pseudo columns are not available by default however so the rest of this tutorial will show you how to add 
them into your project.
&lt;/p&gt;
&lt;h3 class=&quot;blue&quot;&gt;Setting Up a LightSwitch Project&lt;/h3&gt;
&lt;ul&gt;
    &lt;li&gt;
	&lt;b&gt;Step 1:&lt;/b&gt; Go to File -&gt; New -&gt; Project (or Ctrl+Shft+N) and select a LightSwitch application as shown
	in the photo.&lt;br/&gt;&lt;br/&gt;
	
	&lt;img src=&apos;ado-pseudo-column-1.png&apos; /&gt;
	
	&lt;/li&gt;&lt;br/&gt;&lt;br/&gt;
	&lt;li&gt;
	&lt;b&gt;Step 2:&lt;/b&gt; Right Click on the &quot;Data Source&quot; folder of the project and select to add a new source&lt;br/&gt;&lt;br/&gt;
	
	&lt;img src=&apos;ado-pseudo-column-2.png&apos; /&gt;
	
	Then select a Database application:&lt;br/&gt;&lt;br/&gt;
		
	&lt;img src=&apos;ado-pseudo-column-3.png&apos; /&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;b&gt;Step 3:&lt;/b&gt; In the Connection Properties Wizard enter your credentials; in this case since we are
	connecting to Salesforce you will need to put in your user name, password, and access token.  To
	expose the pseudo columns all you need to do after this is enter &lt;b&gt;*=*&lt;/b&gt; in the
	&lt;b&gt;Pseudo Columns&lt;/b&gt; tabs found under &lt;b&gt;Misc&lt;/b&gt;:&lt;br/&gt;&lt;br/&gt;

	&lt;img src=&apos;ado-pseudo-column-4.png&apos; /&gt;
	&lt;/li&gt;
	&lt;b&gt;Step 4:&lt;/b&gt; Next Select what Tables and Views you wish to expose, here &lt;b&gt;Accounts&lt;/b&gt; was selected.&lt;br/&gt;&lt;br/&gt;
	
	&lt;img src=&apos;ado-pseudo-column-5.png&apos; /&gt;
	&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
	After this if you need more help setting up a LightSwitch Screen, we have another Knowledge Base entry
	that shows you how to do this &lt;a href=&apos;http://www.rssbus.com/kb/articles/ado-LightSwitch.rst&apos;&gt;here&lt;/a&gt;.  Once
	you have created a Screen you can now query from the available columns and pseudo columns.
&lt;/p&gt;
&lt;h3 class=&quot;blue&quot;&gt;Using the Pseudo Columns&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;
	&lt;b&gt;Step 1: &lt;/b&gt;Once you have created the screen you will see an &lt;b&gt;Edit Query&lt;/b&gt; link on the designer page; click on
  this link.&lt;br/&gt;&lt;br/&gt;
		
	&lt;img src=&apos;ado-pseudo-column-6.png&apos; /&gt;
	&lt;/li&gt;
	
	&lt;li&gt;
	&lt;b&gt;Step 2: &lt;/b&gt;Select &lt;b&gt;Add Filter&lt;/b&gt; from the &lt;b&gt;Filter&lt;/b&gt; section and select from the available column and pseudo
	columns you can query against:&lt;br/&gt;&lt;br/&gt;
	
	&lt;img src=&apos;ado-pseudo-column-7.png&apos; /&gt;
	&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class=&quot;blue&quot;&gt;That&apos;s it!&lt;/h3&gt;
&lt;p&gt;
That is all it takes to set up a project that uses pseudo columns.  This procedure common among all RSSBus Data Providers 
and additionally can be used to expose pseudo columns with Entity Framework projects.
&lt;/p&gt;
&lt;p&gt;
 If you have any further questions about this you can email our
&lt;a href=&quot;http://www.rssbus.com/support/submit.aspx&quot;&gt;support team&lt;/a&gt;.
&lt;/p&gt;</description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/ado-pseudo-columns.rst</guid>
<link>http://www.rssbus.com/kb/articles/ado-pseudo-columns.rst</link>
<pubDate>Fri, 26 Aug 2011 00:00:00 GMT</pubDate>
<title>Setting Up Pseudo Columns with LightSwitch.</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>The RSSBus QuickBooks Data Provider for ADO.NET makes it easy to get data from QuickBooks. But what if you
        need to return tens of thousands of records? How can you get all this information without there being
        a huge delay in the application? This example shows how to optimize your application to get faster results from QuickBooks.</x:description>
<x:keywords>QuickBooks, ADO.NET, Data Provider, Select, Update, Performance, Cache, Faster, Optimize, Slow, Speed, ADO.NET, ado</x:keywords>
<description>
	&lt;p&gt;
	    The RSSBus QuickBooks Data Provider for ADO.NET makes it easy to get data from QuickBooks. But what if you
        need to return tens of thousands of records? How can you get all this information without there being
        a huge delay in the application? The answer to this problem is simple - use the built-in caching capabilities 
		of the QuickBooks ADO.NET Data Provider.
	&lt;/p&gt;
	
	&lt;h3 class=blue&gt;Creating the Cache&lt;/h3&gt;
	
    &lt;p&gt;
        Accessing the local cache is much faster than accessing data directly from QuickBooks. To do so, 
        you will first need to populate your cache, then change your connection string to access the cache instead
        of the live data source.
    &lt;/p&gt;

	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 1:&lt;/b&gt; Open Visual Studio and create a new C# project.&lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 2:&lt;/b&gt; Add a reference to System.Data.RSSBus.QuickBooks to the project and import it to your main class.&lt;/li&gt;
        &lt;li&gt;&lt;b&gt;Step 3:&lt;/b&gt; Add the following code sample to your project:&lt;/li&gt;
    &lt;/ul&gt;

 &lt;code lang=csharp&gt;&lt;pre&gt;string connectionString = &amp;quot;URL=http://myquickbooksserver:2080;&amp;quot;
	&amp;quot;Password=password;&amp;quot; +
	&amp;quot;User=user;&amp;quot; +
	&amp;quot;Application Name=My QuickBooks Application;&amp;quot; +
	&amp;quot;Auto Cache=True;&amp;quot; +
	&amp;quot;Offline=False;&amp;quot; +
	&amp;quot;Cache Location=C:\\myfolder\\mycache.db;&amp;quot;

QuickBooksConnection conn = new QuickBooksConnection(connectionString);
QuickBooksDataAdapter dataAdapter = new QuickBooksDataAdapter(&amp;quot;Select * From Invoices&amp;quot;, conn);
DataTable table = new DataTable();
dataAdapter.Fill(table);&lt;/pre&gt;&lt;/code&gt;

    &lt;ul&gt;
        &lt;li&gt;&lt;b&gt;Step 4:&lt;/b&gt; Modify the connection string so that it fits your QuickBooks connection settings.
		&lt;u&gt;Remember that you will not require a URL, Password, and User if QuickBooks is installed and running
		on the same machine.&lt;/u&gt;
		&lt;li&gt;&lt;b&gt;Step 5:&lt;/b&gt; Run the code sample without debugging to get it to execute faster.&lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 6:&lt;/b&gt; If you are connecting to multiple company files, you will need to create an individual
		cache for each company file.&lt;/li&gt;
	&lt;/ul&gt;

    &lt;p&gt;
        Now that you have a cache, you can make queries to it. Not only that, but because the internal cache is not limited by the 
        QuickBooks API. This allows you to make more advanced SQLite SELECTS to it that are not available when accessing directly from
        the Data Source. Here&apos;s how to access the cache:
    &lt;/p&gt;
		
	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 1:&lt;/b&gt; Modify the Offline=False portion of the connection string to Offline=True.&lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 2:&lt;/b&gt; Modify Query Passthrough=False to Query Passthrough=True, or add it to the connection string
		if it did not exist.&lt;/li&gt;
	&lt;/ul&gt;

    &lt;p&gt;
        Congratulations! You can now get data directly from the cache. Try comparing the performance between getting data from the cache
        and directly from QuickBooks. You will find that it is much faster to get cached data than data directly from QuickBooks.
    &lt;/p&gt;
    
	&lt;h3 class=blue&gt;Keeping the Cache up to Date&lt;/h3&gt;

    &lt;p&gt;
        Once you have a cache, you do not need to get everything from QuickBooks again to update the cache. Instead, you can use the
		TimeModified column available on every table in the RSSBus Data Provider. However, since &gt; and &lt; syntax handling is not 
		available in QuickBooks, you will need to use the StartModifiedDate and EndModifiedDate pseudo-columns. Here&apos;s a modified
		version of the previous code sample illustrating how:
    &lt;/p&gt;
	
 &lt;code lang=csharp&gt;&lt;pre&gt;string connectionString = &amp;quot;URL=http://myquickbooksserver:2080;&amp;quot;
// ...
connectionString += &amp;quot;Cache Location=C:\\myfolder\\mycache.db;&amp;quot;

// First, get the most recent modified time from the cache. 
// Set Query Passthrough to true to run directly against SQLite.
string connstr = connectionString.Replace(&amp;quot;Offline=False&amp;quot;, &amp;quot;Offline=True&amp;quot;);
connstr = connstr.Replace(&amp;quot;Query Passthrough=False&amp;quot;, &amp;quot;Query Passthrough=True&amp;quot;);
QuickBooksDataAdapter dataAdapter = new QuickBooksDataAdapter(&amp;quot;SELECT max(TimeModified) as MaxTime FROM Invoices&amp;quot;, connstr);
dataAdapter.Fill(table);

// Now set that to be our most recent date. If there are no 
// rows, set date = 1970-01-01.
string date;
try {
	date = (String)table.Rows[0][&amp;quot;MaxTime&amp;quot;];
} catch (Exception ex) {
	date = &amp;quot;1970-01-01&amp;quot;;
}
table.Rows.Clear();
table.Columns.Clear();

// Now search the live data source for only modified dates 
// as new or newer than the one we found. Filling a table 
// will cause the cache to be updated with the results when 
// Auto Cache=True in the connection string.
connstr = connstr.Replace(&amp;quot;Offline=True&amp;quot;, &amp;quot;Offline=False&amp;quot;);
connstr = connstr.Replace(&amp;quot;Query Passthrough=True&amp;quot;, &amp;quot;Query Passthrough=False&amp;quot;);
QuickBooksConnection conn = new QuickBooksConnection(connstr);
dataAdapter = new QuickBooksDataAdapter(&amp;quot;SELECT * FROM Invoices WHERE StartModifiedDate = &amp;#39;&amp;quot; + date + &amp;quot;&amp;#39;&amp;quot;, conn);
dataAdapter.Fill(table);&lt;/pre&gt;&lt;/code&gt;

	&lt;h3 class=blue&gt;Automating the Caching Process&lt;/h3&gt;
	
	&lt;p&gt;
        There is just one more step to keeping your cache up to date. You will simply need to make an automatic process that updates
        the cache on a regular basis. We are including a sample project that uses the Timer class to regularly update the cache based
        on the table names passed to it. &lt;a href=&quot;ado-qb-caching.zip&quot;&gt;Click here to download the sample project&lt;/a&gt;. You will also need 
		to install the QuickBooks ADO.NET Data Provider to run the demo. You can download a &lt;a href=&quot;../../ado/quickbooks&quot;&gt;free trial here&lt;/a&gt;.
    &lt;/p&gt;
		
	&lt;a href=&quot;http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=7579956&quot; rel=&quot;tag&quot; class=hidden&gt;CodeProject&lt;/a&gt;  </description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/ado-qb-caching.rst</guid>
<link>http://www.rssbus.com/kb/articles/ado-qb-caching.rst</link>
<pubDate>Wed, 04 May 2011 00:00:00 GMT</pubDate>
<title>Faster Access to QuickBooks using the QuickBooks Data Provider</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>The RSSBus Salesforce Data Provider for ADO.NET makes it easy to get data from 
		Salesforce. But what if you need to return tens of thousands of records? How can you get 
		all this information without there being a huge delay in the application? This example 
		shows how to optimize your application to get faster results from Salesforce.</x:description>
<x:keywords>Salesforce, ADO.NET, Data Provider, Select, Update, Performance, Cache, Faster, 
		Optimize, Slow, Speed, ADO.NET, ado</x:keywords>
<description>
	&lt;p&gt;
	    The RSSBus Salesforce Data Provider for ADO.NET makes retrieving data from Salesforce a 
		breeze. Sometimes you may need to return tens of thousands of records. How do you get all 
		this information without huge delays? The caching features of the Salesforce ADO.NET Data 
		Provider make this problem a cinch.
	&lt;/p&gt;
	
	&lt;h3 class=blue&gt;Creating the Cache&lt;/h3&gt;
	
    &lt;p&gt;
        Queries from a local cache bring data back much faster than directly from Salesforce.com. 
		Populating and accessing the cache requires setting just two values, &lt;tt&gt;Offline&lt;/tt&gt; and
		&lt;tt&gt;Auto Cache&lt;/tt&gt;, in a connection string.
    &lt;/p&gt;

	&lt;ul&gt;
		&lt;li&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Open Visual Studio and create a new C# project.&lt;/li&gt;
		&lt;li&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Add a reference to System.Data.RSSBus.SalesForce to the project
		and import it to your main class.&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Add the following code sample to your project:&lt;/li&gt;
 &lt;code lang=&quot;csharp&quot;&gt;&lt;pre&gt;string connectionString = 
	&amp;quot;User=user;&amp;quot; +
	&amp;quot;Password=password;&amp;quot; +
	&amp;quot;Access Token=token&amp;quot; +
	&amp;quot;Offline=False;&amp;quot; +
	&amp;quot;Auto Cache=True;&amp;quot; +
	&amp;quot;Cache Location=C:\\mycache.db;&amp;quot;;

SalesForceConnection conn = new SalesForceConnection(connectionString);
SalesForceDataAdapter dataAdapter = new SalesForceDataAdapter(&amp;quot;Select * From Accounts&amp;quot;, conn);
DataTable table = new DataTable();
dataAdapter.Fill(table);&lt;/pre&gt;&lt;/code&gt;
	Note in the connectionString that &lt;tt&gt;&quot;Offline=False;&quot;&lt;/tt&gt;, which tells the Data Provider to 
	query Salesforce instead of the cache, and that &lt;tt&gt;&quot;Auto Cache=True;&quot;&lt;/tt&gt;, which populates the 
	cache with the data pulled from Salesforce in your query
    &lt;/ul&gt;


    &lt;ul&gt;
        &lt;li&gt;&lt;strong&gt;Step 4:&lt;/strong&gt; 
		Modify the connection string so that it fits your Salesforce connection settings.&lt;/li&gt;
		&lt;li&gt;&lt;strong&gt;Step 5:&lt;/strong&gt; 
		Run the code sample without debugging to get it to execute faster.&lt;/li&gt;
	&lt;/ul&gt;

    &lt;p&gt;
        As an optimization measure, it is possible Salesforce has returned only some of the rows 
		matching your query, with additional rows waiting to be fetched. Salesforce appends query 
		results with a column entitled &quot;QueryLocator&quot;. The value in the &quot;QueryLocator&quot; column for
		all rows is the same, provided more results need fetched. To fetch more results via the
		QueryLocator insert the following code:
    &lt;/p&gt;
	
	&lt;code lang=csharp&gt;&lt;pre&gt;String queryLocator = null;

do {
	String query = &amp;quot;SELECT * FROM Accounts&amp;quot;;
		
	if (!string.IsNullOrWhiteSpace(queryLocator)) {
		query += string.Format(&amp;quot; WHERE QueryLocator=&amp;#39;{0}&amp;#39;&amp;quot;, queryLocator);
	}
	
	SalesForceConnection conn = new SalesForceConnection(connectionString);
	SalesForceDataAdapter dataAdapter = new SalesForceDataAdapter(query.ToString(), conn);
	dataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
	dataAdapter.Fill(table);

	if (table.Rows.Count &amp;gt; 0) {
		int lastRow = table.Rows.Count - 1;
		queryLocator = table.Rows[lastRow][&amp;quot;QueryLocator&amp;quot;].ToString();
	}
} while (!string.IsNullOrEmpty(queryLocator));&lt;/pre&gt;&lt;/code&gt;
		
	&lt;p&gt;
        Now that you have a cache, you can make queries to it. Not only that, but the internal cache
		is not limited by the Salesforce API. This allows you to make more advanced SQLite 
		&lt;tt&gt;SELECT&lt;/tt&gt; calls that are not available when accessing directly from the Data 
		Source. Here&apos;s how to access the cache:
    &lt;/p&gt;
		
	&lt;ul&gt;
		&lt;li&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Set the &lt;tt&gt;Offline&lt;/tt&gt; connection value to 
		&lt;tt&gt;&quot;True&quot;&lt;/tt&gt; to direct the adapter to the cache.&lt;/li&gt;
		&lt;li&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; To disable the SQL Parser from performing error checking, set the 
		&lt;tt&gt;Query Passthrough&lt;/tt&gt; connection value to &lt;tt&gt;&quot;True&quot;&lt;/tt&gt;, or add it to the connection 
		string if it did not previously exist.&lt;/li&gt;
	&lt;/ul&gt;

    &lt;p&gt;
        Congratulations! You can now get data directly from the cache. Try comparing the performance 
		between getting data from the cache and directly from Salesforce. You will find that it is 
		much faster to get cached data than data directly from Salesforce. In addition, unlike SalesForce,
    the cache can always return all rows of data.
    &lt;/p&gt;
    
	&lt;h3 class=blue&gt;Keeping the Cache up to Date&lt;/h3&gt;

    &lt;p&gt;
        Once you have a cache, you do not need to get everything from Salesforce again to update the 
		cache. Instead, you can use the LastModifiedDate column available on every table in the 
		RSSBus Data Provider. However, since comparative operators (aside from equals) are not 
		available in Salesforce, you will need to use a &lt;tt&gt;SOQLWHERE&lt;/tt&gt; condition in your 
		&lt;tt&gt;SELECT&lt;/tt&gt; statement. 
	&lt;/p&gt;
	&lt;p&gt;
		Here&apos;s a modified version of the previous code sample illustrating how:
    &lt;/p&gt;
	&lt;code lang=csharp&gt;&lt;pre&gt;// First, get the most recent modified time from the cache. 
// Set Query Passthrough to true to run directly against SQLite.
connectionString = connectionString.Replace(&amp;quot;Offline=False&amp;quot;, &amp;quot;Offline=True&amp;quot;);
connectionString = connectionString.Replace(&amp;quot;Query Passthrough=False&amp;quot;, &amp;quot;Query Passthrough=True&amp;quot;);
String query = &amp;quot;SELECT max(LastModifiedDate) as MaxTime FROM Accounts&amp;quot;;
SalesForceDataAdapter dataAdapter = new SalesForceDataAdapter(query, connectionString);
dataAdapter.Fill(table);

// Now set that to be our most recent date. 
// If there are no rows, set date to beginning of epoch to retrieve all rows.
string date;
if (datatable.Rows.Count &amp;gt; 0)
	date = (string)datatable.Rows[0][&amp;quot;MaxTime&amp;quot;];
else
	date = &amp;quot;1970-01-01 00:00:00.000&amp;quot;;

DateTime dateTime = DateTime.ParseExact(date, &amp;quot;yyyy-MM-dd HH:mm:ss.fff&amp;quot;, null);
date = string.Format(&amp;quot;{0:s}Z&amp;quot;, dateTime); //SOQL-specific date formatting

// Now search the live data source for only modified dates as new or newer than the one we 
// found. Filling a table will cause the cache to be updated with the results when 
// &amp;quot;Auto Cache=True&amp;quot; in the connection string.
connectionString = connectionString.Replace(&amp;quot;Offline=True&amp;quot;, &amp;quot;Offline=False&amp;quot;);
connectionString = connectionString.Replace(&amp;quot;Query Passthrough=True&amp;quot;, &amp;quot;Query Passthrough=False&amp;quot;);
SalesForceConnection conn = new SalesForceConnection(connectionString);
String query = String.Format(&amp;quot;SELECT * FROM Accounts WHERE (SOQLWHERE = &amp;#39;LastModifiedDate&amp;gt;={1}&amp;#39;)&amp;quot;, date);
dataAdapter = new SalesForceDataAdapter(query, conn);
dataAdapter.Fill(table);&lt;/pre&gt;&lt;/code&gt;

	&lt;h3 class=blue&gt;Automating the Caching Process&lt;/h3&gt;
	
	&lt;p&gt;
        There is just one more step to keeping your cache up to date. You will simply need to make 
		an automatic process that updates the cache on a regular basis. We are including a sample 
		project that uses the Timer object to regularly update the cache based on the table names 
		passed to it. &lt;a href=&quot;ado-sf-caching.zip&quot;&gt;Click here to download the sample project&lt;/a&gt;. You 
		will also need to install the Salesforce ADO.NET Data Provider to run the demo. You can 
		download a &lt;a href=&quot;../../ado/salesforce&quot;&gt;free trial here&lt;/a&gt;.
    &lt;/p&gt;
		
		
	&lt;a href=&quot;http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=7579956&quot; rel=&quot;tag&quot; class=hidden&gt;CodeProject&lt;/a&gt;  </description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/ado-sf-caching.rst</guid>
<link>http://www.rssbus.com/kb/articles/ado-sf-caching.rst</link>
<pubDate>Mon, 11 Jul 2011 00:00:00 GMT</pubDate>
<title>Faster Access to Salesforce.com using the Salesforce Data Provider</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>The SharePoint Data Provider offers connectivity with on-premise SharePoint Server as well as 
		SharePoint Online and Office 365.  This walkthrough demonstrates how to properly authenticate and connect to  
		SharePoint Online / Office 365.</x:description>
<x:keywords>SharePoint, Cookie, Office 365, ado, ADO.NET, office365</x:keywords>
<description>

&lt;p&gt;
This article walks through the process of using the &lt;a href=&apos;http://www.rssbus.com/ado/sharepoint&apos;&gt;SharePoint Data Provider&lt;/a&gt; and authenticating with SharePoint 
Online / Office 365.  This tutorial covers how to perform this programmatically and with the Visual Studio Server Explorer.
&lt;/p&gt;

&lt;p&gt;	
In addition to accessing lists from local installations of SharePoint server, 
the SharePoint Data Provider also supports accessing lists from SharePoint Online. SharePoint Online and 
Office 365 authentication requires a cookie based authentication. To connect to SharePoint 
Online please follow the steps below.
&lt;/p&gt;

&lt;h3 class=&quot;blue&quot;&gt;Authenticating to SharePoint Online in your program.&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;b&gt;Step 1: &lt;/b&gt;
	Point Internet Explorer to &apos;http://YOUR_DOMAIN.sharepoint.com/TeamSite&apos; which will redirect you to an authentication page.  Be Sure to check the &apos;Keep-Me-Signed-In&apos;
	option at login.
	&lt;/li&gt;&lt;br/&gt;
	&lt;center&gt;&lt;img src=&quot;ado-sharepoint-online-1.png&quot;/&gt;&lt;/center&gt;&lt;br/&gt;&lt;br/&gt;		
	&lt;li&gt;&lt;b&gt;Step 2: &lt;/b&gt; 	
	Now that you have authenticated to SharePoint Online through your web browser, the cookie that was retrieved must be passed to the Auth Cookie connection setting.
	If you used Internet Explorer to log into SharePoint Online then you set Auth Cookie to &apos;*&apos; and the Data Provider will pick up the cookie automatically from IE.
	Here is an example of how to set this in your application:
	&lt;br/&gt;
	&lt;code lang=csharp&gt;&lt;pre&gt;DataTable table = new DataTable();
String command = &amp;quot;SELECT * FROM Calendar&amp;quot;;
SharePoinConnection conn = new SharePointConnection( &amp;quot;URL=http://YOUR_DOMAIN.sharepoint.com/TeamSite; Auth Cookie=&amp;#39;*&amp;#39;&amp;quot;);
SharePointDataAdapter adapter = new SharePointDataAdapter(command, conn);
dataAdapter.Fill(table);&lt;/pre&gt;&lt;/code&gt;	
	&lt;br/&gt;&lt;br/&gt;		
	&lt;/li&gt;
&lt;/ul&gt;
		
&lt;h3 class=&quot;blue&quot;&gt;Authenticating with Server Explorer.&lt;/h3&gt;
	
&lt;p&gt;To set the &apos;Auth Cookie&apos; with the Server Explorer in Visual Studio you will have to have completed &lt;b&gt;Step 1&lt;/b&gt; from above first.  Then after the
cookie has been retrieved you can add new connection:
&lt;br/&gt;&lt;br/&gt;
&lt;center&gt;&lt;img src=&quot;ado-sharepoint-online-2.png&quot; /&gt;&lt;/center&gt;
Now you need to add the URL and wildcard charater, &apos;*&apos;, and the explorer will construct the connection string for you:
&lt;br/&gt;&lt;br/&gt;
&lt;center&gt;&lt;img src=&quot;ado-sharepoint-online-3.png&quot; /&gt;&lt;/center&gt;
&lt;/p&gt;	

&lt;p&gt;
After following the steps above, you can use the provider just like you would when connected to a local SharePoint server.  This procedure can also be applied to 
Entity Framework and Microsoft LightSwitch projects.
&lt;/p&gt;
&lt;p&gt;
If you have any further questions about this you can email our
&lt;a href=&quot;http://www.rssbus.com/support/submit.aspx&quot;&gt;support team&lt;/a&gt;.
&lt;/p&gt;

&lt;a href=&quot;http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=7579956&quot; rel=&quot;tag&quot; class=hidden&gt;CodeProject&lt;/a&gt;  </description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/ado-sharepoint-online.rst</guid>
<link>http://www.rssbus.com/kb/articles/ado-sharepoint-online.rst</link>
<pubDate>Wed, 03 Aug 2011 00:00:00 GMT</pubDate>
<title>Accessing SharePoint Online with the RSSBus SharePoint Data Provider.</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>Easily back-up SalesForce data to SQL Server using the SalesForce Data Provider for ADO.NET. This example uses an SSIS workflow 
		to populate a database with SalesForce data using the SalesForce ADO.NET Data Provider.</x:description>
<x:keywords>SSIS, SalesForce, ADO.NET, SQL Server Integration Services, SQLExpress</x:keywords>
<description>
	&lt;p&gt;	    
	    Using SQL Server as a backup for critical business data provides an essential safety net against loss.  In addition, 
		backing up data to SQL Server enables business users to more easily connect that data with features like reporting, 
		full-text search, analytics, and more.
	&lt;/p&gt;
	&lt;p&gt;
		This example demonstrates how to use the SalesForce ADO.NET Data Provider inside of a SQL Server SSIS workflow 
		to transfer data directly from SalesForce account into a Microsoft SQL Server database.  
	&lt;/p&gt;
	
	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 1:&lt;/b&gt; Open Visual Studio and create a new Integration Services Project.&lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 2:&lt;/b&gt; Add a new Data Flow Task from the Toolbox onto the Control Flow screen.&lt;/li&gt;
        &lt;li&gt;&lt;b&gt;Step 3:&lt;/b&gt; In the Data Flow screen, add an ADO NET Source and an OLE DB Destination from the Toolbox.&lt;/li&gt;
	&lt;/ul&gt;
	
	&lt;img src=&apos;ado-ssistask-sf-1.png&apos; /&gt;
	
	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 4:&lt;/b&gt; Add a new Data Connection, and select your provider as .NET Providers\RSSBus SalesForce Data Provider.&lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 5:&lt;/b&gt; Enter the connection details for your SalesForce account. In this example, we are using a SalesForce 
		Developer Account for this example. Remember to obtain the Access Token for the account.&lt;/li&gt;
	&lt;/ul&gt;
	
	&lt;img src=&apos;ado-ssistask-sf-2.png&apos; /&gt;
	
	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 6:&lt;/b&gt; Once you have selected the new connection, specify the query to use for the data extraction. In this case, 
		the query is going to extract the information for the SalesForce accounts.&lt;/li&gt;
	&lt;/ul&gt;
	
	&lt;img src=&apos;ado-ssistask-sf-3.png&apos; /&gt;

	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 7:&lt;/b&gt; Close the ADO NET Source wizard. Now drag the arrow below the source to connect it to the OLE DB Destination.&lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 8:&lt;/b&gt; Open the OLE DB Destination and add a New Connection. Enter your server and database information here. 
		In this example, we are using a separate machine running SQLExpress.&lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 9:&lt;/b&gt; Set your Data access mode to &quot;table or view&quot; and select the table or view to populate in your database.&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;Step 10:&lt;/b&gt; Configure any properties you wish to on the Mappings screen.&lt;/li&gt;
	&lt;/ul&gt;	
	
	&lt;img src=&apos;ado-ssistask-sf-4.png&apos; /&gt;

	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 11:&lt;/b&gt; Close the OLE DB Destination Editor and run the project. 
		After the SSIS Task has finished executing, your database will be populated with data obtained from SalesForce.&lt;/li&gt;
	&lt;/ul&gt;				
	
	&lt;h3 class=blue&gt;SSIS Sample Project&lt;/h3&gt;
	
	&lt;p&gt;
	    To help you with getting started using the SalesForce Data Provider within SQL Server SSIS, download the fully functional 
		&lt;a href=&quot;ado-ssistask.zip&quot;&gt;sample project&lt;/a&gt;. You will also need the SalesForce 
		ADO.NET Data Provider to make the connection. You can download a &lt;a href=&quot;../../ado/salesforce&quot;&gt;free trial here&lt;/a&gt;.
    &lt;/p&gt;
    
    &lt;p&gt;
        Note: Before running the demo, you will need to change your connection details to fit your environment as detailed in
        Step 5 and Step 8.
    &lt;/p&gt;
	
	&lt;a href=&quot;http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=7579956&quot; rel=&quot;tag&quot; class=hidden&gt;CodeProject&lt;/a&gt;  </description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/ado-ssistask-sf.rst</guid>
<link>http://www.rssbus.com/kb/articles/ado-ssistask-sf.rst</link>
<pubDate>Tue, 12 Apr 2011 00:00:00 GMT</pubDate>
<title>Connect SalesForce to SQL Server through SSIS</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>Easily back-up SharePoint data to SQL Server using the SharePoint Data Provider for ADO.NET. This example uses an SSIS workflow 
		to populate a database with SharePoint data using the SharePoint ADO.NET Data Provider.</x:description>
<x:keywords>SSIS, SharePoint, ADO.NET, SQL Server Integration Services, SQLExpress</x:keywords>
<description>
	&lt;p&gt;	    
	    Using SQL Server as a backup for critical business data provides an essential safety net against loss. In addition, 
		backing up data to SQL Server enables business users to more easily connect that data with features like reporting, 
		full-text search, analytics, and more.
	&lt;/p&gt;
	&lt;p&gt;
		This example demonstrates how to use the SharePoint ADO.NET Data Provider inside of a SQL Server SSIS workflow
		to transfer data directly from a SharePoint server into a Microsoft SQL Server database.   
	&lt;/p&gt;
	
	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 1:&lt;/b&gt; Open Visual Studio and create a new Integration Services Project.&lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 2:&lt;/b&gt; Add a new Data Flow Task from the Toolbox onto the Control Flow screen.&lt;/li&gt;
        &lt;li&gt;&lt;b&gt;Step 3:&lt;/b&gt; In the Data Flow screen, add an ADO NET Source and an OLE DB Destination from the Toolbox.&lt;/li&gt;
	&lt;/ul&gt;
	
	&lt;img src=&apos;ado-ssistask-sp-1.png&apos; /&gt;
	
	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 4:&lt;/b&gt; Add a new Data Connection, and select your provider as .NET Providers\RSSBus SharePoint Data Provider.&lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 5:&lt;/b&gt; Enter the connection details for your SharePoint machine. In this example, we are using a SharePoint blog page.&lt;/li&gt;
	&lt;/ul&gt;
	
	&lt;img src=&apos;ado-ssistask-sp-2.png&apos; /&gt;
	
	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 6:&lt;/b&gt; Once you have selected the new connection, specify the query to use for the data extraction. In this case, 
		the query is going to extract the complete information for the SalesForce accounts.&lt;/li&gt;
	&lt;/ul&gt;
	
	&lt;img src=&apos;ado-ssistask-sp-3.png&apos; /&gt;

	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 7:&lt;/b&gt; Close the ADO NET Source wizard. Now drag the arrow below the source to connect it to the OLE DB Destination.&lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 8:&lt;/b&gt; Open the OLE DB Destination and add a New Connection. Enter your server and database information here. 
		In this example, we are using a separate machine running SQLExpress.&lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 9:&lt;/b&gt; Set your Data access mode to &quot;table or view&quot; and select the table or view to populate in your database.&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;Step 10:&lt;/b&gt; Configure any properties you wish to on the Mappings screen.&lt;/li&gt;
	&lt;/ul&gt;	
	
	&lt;img src=&apos;ado-ssistask-sp-4.png&apos; /&gt;

	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 11:&lt;/b&gt; Close the OLE DB Destination Editor and run the project. After the SSIS Task has finished executing, 
		your database will be populated with data obtained from SharePoint.&lt;/li&gt;
	&lt;/ul&gt;				
	
	&lt;h3 class=blue&gt;SSIS Sample Project&lt;/h3&gt;
	
	&lt;p&gt;
		To help you with getting started using the SharePoint Data Provider within SQL Server SSIS, download the fully functional 
		&lt;a href=&quot;ado-ssistask.zip&quot;&gt;sample project&lt;/a&gt;. You will also need the SharePoint 
		ADO.NET Data Provider to make the connection. You can download a &lt;a href=&quot;../../ado/sharepoint&quot;&gt;free trial here&lt;/a&gt;.
    &lt;/p&gt;
    
    &lt;p&gt;
        Note: Before running the demo, you will need to change your connection details to fit your environment as detailed in
        Step 5 and Step 8.
    &lt;/p&gt;
	
	&lt;a href=&quot;http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=7579956&quot; rel=&quot;tag&quot; class=hidden&gt;CodeProject&lt;/a&gt;  </description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/ado-ssistask-sp.rst</guid>
<link>http://www.rssbus.com/kb/articles/ado-ssistask-sp.rst</link>
<pubDate>Tue, 12 Apr 2011 00:00:00 GMT</pubDate>
<title>Connect SharePoint to SQL Server through SSIS</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>Easily back-up QuickBooks data to SQL Server using the QuickBooks Data Provider for ADO.NET. This example uses an SSIS workflow 
		to populate a database with QuickBooks data using the QuickBooks ADO.NET Data Provider.</x:description>
<x:keywords>SSIS, QuickBooks, ADO.NET, SQL Server Integration Services, SQLExpress</x:keywords>
<description>
	&lt;p&gt;	    
	    Using SQL Server as a backup for critical business data provides an essential safety net against loss.  In addition, 
		backing up data to SQL Server enables business users to more easily connect that data with features like reporting, 
		full-text search, analytics, and more.
	&lt;/p&gt;
	&lt;p&gt;
		This example demonstrates how to use the QuickBooks ADO.NET Data Provider inside of a SQL Server SSIS workflow 
		to transfer data directly from QuickBooks and/or QuickBooks Online into a Microsoft SQL Server database. The exact 
		same procedure outlined below can be used with any &lt;a href=&apos;http://www.rssbus.com/ado/&apos;&gt;RSSBus ADO.NET Data Providers&lt;/a&gt; 
		to connect SQL Server directly with remote data via SSIS.  
	&lt;/p&gt;
	
	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 1:&lt;/b&gt; Open Visual Studio and create a new Integration Services Project.&lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 2:&lt;/b&gt; Add a new Data Flow Task from the Toolbox onto the Control Flow screen.&lt;/li&gt;
        &lt;li&gt;&lt;b&gt;Step 3:&lt;/b&gt; In the Data Flow screen, add a DataReader Source and an OLE DB Destination from the Toolbox.&lt;/li&gt;
	&lt;/ul&gt;
	
	&lt;img src=&apos;ado-ssistask-4.png&apos; /&gt;
	
	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 4:&lt;/b&gt; Add a new Data Connection, and select your provider as .NET Providers\RSSBus QuickBooks Data Provider.&lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 5:&lt;/b&gt; Enter the connection details for your QuickBooks machine. In this example, we are using a separate
		machine to host QuickBooks on.&lt;/li&gt;
	&lt;/ul&gt;
	
	&lt;img src=&apos;ado-ssistask-1.png&apos; /&gt;
	
	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 6:&lt;/b&gt; Open the DataReader editor. Go to the Connection Managers tab and select the 
		Data Connection you just created.&lt;/li&gt;
        &lt;li&gt;&lt;b&gt;Step 7:&lt;/b&gt; Keeping the DataReader Source open, go to the Component Properties tab and enter your SQL select command.&lt;/li&gt;
	&lt;/ul&gt;
	
	&lt;img src=&apos;ado-ssistask-2.png&apos; /&gt;

	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 8:&lt;/b&gt; Close the DataReader editor. Now drag the arrow below the DataReader Source to connect 
		it to the OLE DB Destination.&lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 9:&lt;/b&gt; Open the OLE DB Destination and add a New Connection. Enter your server and database information here.
		In this example, we are using a separate machine running SQLExpress.&lt;/li&gt;
        &lt;li&gt;&lt;b&gt;Step 10:&lt;/b&gt; Set your Data access mode to &quot;table or view&quot; and select the table or view to populate in your database&lt;/li&gt;
        &lt;li&gt;&lt;b&gt;Step 11:&lt;/b&gt; Configure any properties you wish to on the Mappings screen.&lt;/li&gt;
	&lt;/ul&gt;	
	
	&lt;img src=&apos;ado-ssistask-3.png&apos; /&gt;

	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 12:&lt;/b&gt; Close the OLE DB Destination Editor and run the project. After the SSIS Task has finished executing, 
		your database will be populated with data obtained from QuickBooks.&lt;/li&gt;
	&lt;/ul&gt;				
	
	&lt;h3 class=blue&gt;SSIS Sample Project&lt;/h3&gt;
	
	&lt;p&gt;
	    To help you with getting started using the QuickBooks Data Provider within SQL Server SSIS, download the fully functional
	    &lt;a href=&quot;ado-ssistask.zip&quot;&gt;sample project&lt;/a&gt;.  You will also need the QuickBooks
	    ADO.NET Data Provider to make the connection. You can download a &lt;a href=&quot;../../ado/quickbooks&quot;&gt;free trial here&lt;/a&gt;.
    &lt;/p&gt;
    
    &lt;p&gt;
        Note: Before running the demo, you will need to change your connection details to fit your environment as detailed in
        Step 5 and Step 9.
    &lt;/p&gt;
	
	&lt;a href=&quot;http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=7579956&quot; rel=&quot;tag&quot; class=hidden&gt;CodeProject&lt;/a&gt;  
	</description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/ado-ssistask.rst</guid>
<link>http://www.rssbus.com/kb/articles/ado-ssistask.rst</link>
<pubDate>Tue, 12 Apr 2011 00:00:00 GMT</pubDate>
<title>Connect QuickBooks to SQL Server through SSIS</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>Deploy RSSBus AS2 Connector to Microsoft&amp;#39;s Windows Azure cloud service and make worries about having to build, 
    host and scale your AS2 services a thing of the past.</x:description>
<x:keywords>RSSBus Apps, Purchase Order, Add Purchase Order, apps, tips, as2, as2connector</x:keywords>
<description>
  &lt;p&gt;
    Chances are, the idea of opening up access to your AS2 services outside your secure, load-balanced network inspires 
    cringe-worthy visions of hours wading through configuration esoterica with nothing but the most brutally terse of 
    &lt;a href=&apos;http://en.wikipedia.org/wiki/Man_page&apos;&gt;man pages&lt;/a&gt; to guide you. To the rescue, RSSBus&apos; web-ready AS2 Connector 
    makes nightmares like these a thing of the past.
  &lt;/p&gt;

  &lt;p&gt;
    It gets better: pairing AS2 Connector with Microsoft&apos;s Windows Azure cloud service gives you the levity to forget about having to build, 
    host and scale your AS2 services ever again.
  &lt;/p&gt;

  &lt;p&gt;
    Follow this tutorial and learn the few short steps you need to deploy AS2 Connector on Windows Azure.
  &lt;/p&gt;

  
  &lt;h3&gt;A Base Assumption&lt;/h3&gt;

  &lt;p&gt;
    For the purposes of this article, we assume you already have an active Windows Azure subscription. You can find more 
    information on Microsoft&apos;s subscription offers on the &lt;a href=&quot;http://www.microsoft.com/windowsazure/&quot;&gt;Windows Azure 
    website&lt;/a&gt;.
  &lt;/p&gt;


  &lt;h1&gt;Deploying AS2 Connector to Windows Azure&lt;/h1&gt;
  &lt;p&gt;
    Deploying services to Windows Azure requires three files: a signed certificate (.pfx file), a Cloud Service Package 
    (.cspkg), and a Cloud Service Configuration (.cscfg). First we&apos;ll create a self-signed certificate and then create a 
    hosted service on Windows Azure with a pre-packaged version of AS2 Connector.
  &lt;/p&gt;

  &lt;h2&gt;Creating a Certificate&lt;/h2&gt;
  &lt;p&gt;
    Windows Azure accepts a variety of certificates. For this article, we&apos;ll create a self-signed certificate, since they&apos;re 
    relatively easy to create and sufficiently secure for basic uses.
  &lt;/p&gt;
  &lt;ol&gt;
    &lt;li&gt;
      In Windows, open the &lt;a href=&quot;http://technet.microsoft.com/en-us/library/cc770472(WS.10.aspx)&quot;&gt;IIS Manager&lt;/a&gt;.
    &lt;/li&gt;
    &lt;li&gt;
      Under the &lt;strong&gt;IIS&lt;/strong&gt; heading in the middle pane, double-click the &lt;strong&gt;Server Certificates&lt;/strong&gt; icon.
    &lt;/li&gt;
    &lt;li&gt;
      Under the &lt;strong&gt;Actions&lt;/strong&gt; panel on the right hand side, select &lt;strong&gt;Create Self-Signed 
      Certificate...&lt;/strong&gt;
    &lt;/li&gt;
    &lt;li&gt;
      A dialog will appear asking you to name your certificate. When you&apos;re done, the new certificate will appear in the 
      &lt;strong&gt;Server Certificates&lt;/strong&gt; pane.
    &lt;/li&gt;
    &lt;li&gt;
      Right-click on the newly created certificate and select &lt;strong&gt;Export&lt;/strong&gt;. Complete the export dialog that pops 
      up.
    &lt;/li&gt;
  &lt;/ol&gt;

  &lt;h2&gt;Creating and Deploying a Hosted Service&lt;/h2&gt;
  

  &lt;ol&gt;
    &lt;li&gt;
      &lt;a href=&quot;apps-as2-azure-RSSBusAS2ConnectorForAzure.zip&quot;&gt;Download&lt;/a&gt; the RSSBus AS2 Connector package and configuration files for Windows Azure.
    &lt;/li&gt;
    &lt;li&gt;
      Log into &lt;a href=&quot;https://windows.azure.com&quot;&gt;Windows Azure&lt;/a&gt;. You will be presented with the Management Portal.
    &lt;/li&gt;
    &lt;li&gt;
      On the ribbon up top, select &lt;strong&gt;New Hosted Service&lt;/strong&gt;.
    &lt;/li&gt;
    &lt;li&gt;
      A configuration dialog will pop up. Fill in the relevant details. There are several details of note to be aware of:
      &lt;ul&gt;
        &lt;li&gt;
      Under &lt;strong&gt;Deployment options&lt;/strong&gt;, select &lt;strong&gt;Deploy to stage environment&lt;/strong&gt;.
    &lt;/li&gt;
        &lt;li&gt;
      For &lt;strong&gt;Package location&lt;/strong&gt; and &lt;strong&gt;Configuration file&lt;/strong&gt;, you&apos;ll want to select the files 
      downloaded in the first step of this section.
    &lt;/li&gt;
        &lt;li&gt;
      When you click &lt;strong&gt;Add Certificate&lt;/strong&gt;, you will want to provide the self-signed certificate you created in 
      the previous section.
    &lt;/li&gt;
      &lt;/ul&gt;
    
    &lt;/li&gt;
    &lt;li&gt;
      When you are finished, click &lt;strong&gt;OK&lt;/strong&gt;. Windows Azure will upload, initialize, and start AS2 Connector. This 
      process may take several minutes.
    &lt;/li&gt;
    &lt;li&gt;
      Select the deployment after its status indicates that it&apos;s ready. In the right hand panel, you will see a property 
      entitled &lt;strong&gt;DNS name&lt;/strong&gt;. Click on the link below that. 
    &lt;/li&gt;
    &lt;li&gt;
      A new tab appears presenting you with the RSSBus AppServer login page. Enter the following default credentials:
      &lt;ul&gt;
        &lt;li&gt;
      &lt;strong&gt;User&lt;/strong&gt;: admin
    &lt;/li&gt;
        &lt;li&gt;
      &lt;strong&gt;Password&lt;/strong&gt;: test
    &lt;/li&gt;
      &lt;/ul&gt;
    
    &lt;/li&gt;
  &lt;/ol&gt;

  &lt;p&gt;
    Now AS2 Connector is fully deployed. All you have to do after this is simply configure your AS2 Connector Profile and add 
    your AS2 partners and you&apos;re in business.
  &lt;/p&gt;

</description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/apps-as2-azure.rst</guid>
<link>http://www.rssbus.com/kb/articles/apps-as2-azure.rst</link>
<pubDate>Fri, 02 Sep 2011 00:00:00 GMT</pubDate>
<title>RSSBus in the Cloud: Deploying AS2 Connector to Windows Azure</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>Quickly import your old profile and trading partner information from previous versions of AS2 Connector.</x:description>
<x:keywords>AS2, AS2 Connector, Upgrade, Import, Migrate, tips, as2connector</x:keywords>
<description>

&lt;style type=&quot;text/css&quot;&gt;
  .section {
    margin-bottom: 1em;
  }
  .section p, .section ol {
    display: none;
  }
&lt;/style&gt;

&lt;p&gt;
  RSSBus AS2 Connector V3 offers a quick 3-step way to import your old trading partners from previous versions of the 
  app.
&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    Navigate to RSSBus AS2 Connector on your server. Click on the &lt;b&gt;Services&lt;/b&gt; tab at the top right.
  &lt;/li&gt;

  &lt;li&gt;
    In the left-hand panel listing your available services, select &lt;b&gt;ImportProfile.rsb&lt;/b&gt;.
  &lt;/li&gt;

  &lt;li&gt;
    In the &lt;b&gt;Directory&lt;/b&gt; field of the service, specify the path to your old &lt;b&gt;as2data&lt;/b&gt; directory and click the
    &lt;b&gt;Call Service&lt;/b&gt; button.
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
  AS2 Connector should now have successfully imported your old profile information and trading partners. Because 
  importing copies over your old data, changes in one application do not appear in the other if they are running 
  side by side.
&lt;/p&gt;
</description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/apps-as2-upgrading.rst</guid>
<link>http://www.rssbus.com/kb/articles/apps-as2-upgrading.rst</link>
<pubDate>Tue, 06 Dec 2011 00:00:00 GMT</pubDate>
<title>Upgrading to AS2 Connector V3</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>RSSBus apps can raise events when a particular condition is met. In the RSSBus AS2 Connector app, for 
    instance, sending a file raises two events: BeforeSend and AfterSend. These events become useful when you want to 
    take action on them. RSSBus apps allows you to programmatically take advantage of events through simple scripts. 
    This tutorial shows you how to enable actions in scripts associated with events in RSSBus apps.</x:description>
<x:keywords>Apps, Events, as2connector, Batch, Solutions, tips, allconnector</x:keywords>
<description>

&lt;script type=&quot;text/javascript&quot;&gt;
  SyntaxHighlighter.all();
&lt;/script&gt;

&lt;p&gt;
  RSSBus apps can raise events when a particular condition is met. In the RSSBus AS2 Connector app, for instance, 
  sending a file raises two events: BeforeSend and AfterSend. The power of these events lies in the ability to respond 
  to them with, say, running a batch file or shell script. This tutorial shows you how to automate actions in your 
  operatings system after an RSSBus app raises an event.
&lt;/p&gt;

&lt;h2&gt;Learning what events an application offers&lt;/h2&gt;

&lt;p&gt;
  To find out what events an app makes available, log in to that app and navigate to the &lt;b&gt;Services&lt;/b&gt; page. On the 
  left-hand panel, scroll down to the &lt;b&gt;Events&lt;/b&gt; section. You will see listed the events available for a given app.
&lt;/p&gt;

&lt;p&gt;
  If you click on one of the events, it lists some information, including the event parameters. These are bits of data
  you can use within the script that executes in tandem with that event. Below that, in the &lt;b&gt;Configuration&lt;/b&gt; 
  section, you will see a description of events, including the path to the selected event.
&lt;/p&gt;

&lt;h2&gt;A Simple Example: Running a Batch File After Sending a File in AS2 Connect&lt;/h2&gt;

&lt;p&gt;
  AS2 Connector sends and receives files to and from trading partners. Often times it is useful to execute a batch when 
  a file is sent from AS2 Connector, so for this example, we&apos;ll be working with the AfterSend event. Go to the 
  &lt;b&gt;AfterSend&lt;/b&gt; event listed in the &lt;b&gt;Events&lt;/b&gt; section of the left-hand column on the &lt;b&gt;Services&lt;/b&gt; page. Under
  the &lt;b&gt;Configuration&lt;/b&gt; section, note the path to the events directory and navigate to it in your file system.
&lt;/p&gt;

&lt;p&gt;
  In the events directory, you will see several files. Open the &lt;b&gt;AfterSend.rsb&lt;/b&gt; file in your flavor of text editor.
  You will see several blocks of XML, including a few commented blocks. The commented blocks are prebaked scripts that
  perform common and useful tasks. The first two comment blocks respectively pertain to Windows batch files and UNIX 
  shells scripts. The directions for either option are identical in this tutorial, but we&apos;ll use Windows batch files
  here for simplicity&apos;s sake.
&lt;/p&gt;

&lt;p&gt;
  First, uncomment the &lt;b&gt;batch file&lt;/b&gt; code block so it looks like this:
&lt;/p&gt;

&lt;pre class=&quot;brush: xml&quot; lang=&quot;xml&quot;&gt;
&amp;lt;rsb:set item=&quot;batchInput&quot; attr=&quot;name&quot; value=&quot;C:\myfile.bat&quot; /&gt;
&amp;lt;rsb:set item=&quot;batchInput&quot; attr=&quot;arguments&quot; value=&quot;[AS2From] [File]&quot; /&gt;
&amp;lt;rsb:call op=&quot;sysExecute&quot; input=&quot;batchInput&quot; /&gt;
&lt;/pre&gt;

&lt;p&gt;
  Let&apos;s unpack this brief triplet of code. The prefix &lt;tt&gt;rsb&lt;/tt&gt; indicates the XML tag is an RSBScript command. 
  RSBScript is the scripting language of RSSBus.
&lt;/p&gt;

&lt;p&gt;
  You see there are two &lt;tt&gt;rsb&amp;#58;set&lt;/tt&gt; tags. These tags set up the inputs to the &lt;tt&gt;rsb&amp;#58;call&lt;/tt&gt; tag on the 
  third line. Notice the &lt;tt&gt;rsb&amp;#58;set&lt;/tt&gt; tags have three attributes: item, attr, and value. For the first 
  &lt;tt&gt;rsb&amp;#58;set&lt;/tt&gt;, we set the location of our batch file to the &lt;tt&gt;name&lt;/tt&gt; attribute of the &lt;tt&gt;batchInput&lt;/tt&gt; 
  item. You will want to edit the value to point the location of your own batch file.
&lt;/p&gt;

&lt;p&gt;
  We do something similar in the next &lt;tt&gt;rsb&amp;#58;set&lt;/tt&gt; tag. This time, we are setting the arguments of the batch 
  file itself. &lt;b&gt;AS2From&lt;/b&gt; and &lt;b&gt;File&lt;/b&gt; are inputs to the AfterSend event. All of the inputs are listed in the
  &lt;tt&gt;rsb&amp;#58;info&lt;/tt&gt; block near the top of the script. 
&lt;/p&gt;
  
&lt;p&gt;
  Also notice the square brackets around the input names: this resolves the value of those inputs. Say for instance the
  values of &lt;b&gt;AS2From&lt;/b&gt; and &lt;b&gt;File&lt;/b&gt; were &quot;MyPartner&quot; and &quot;C:\test.xml&quot;, respectively. Then, according to our
  &lt;tt&gt;rsb&amp;#58;set&lt;/tt&gt; command, the &lt;tt&gt;arguments&lt;/tt&gt; attribute of the &lt;tt&gt;batchInput&lt;/tt&gt; will equal 
  &lt;tt&gt;MyPartner C:\test.xml&lt;/tt&gt;. Again, you will need to edit this value to match the inputs of your batch script.
&lt;/p&gt;

&lt;p&gt;
  Finally, the &lt;tt&gt;rsb&amp;#58;call&lt;/tt&gt; tag calls the &lt;b&gt;sysExecute&lt;/b&gt; operation using our &lt;b&gt;batchInput&lt;/b&gt; item. This
  tells the operating system to execute a process as specified by our &lt;b&gt;batchInput&lt;/b&gt;.
&lt;/p&gt;


&lt;h2&gt;Taking Control of Events&lt;/h2&gt;

&lt;p&gt;
  After you&apos;ve successfully enabled your batch file or shell script to execute when an event fires, the actions you can
  perform are limited by the capabilities of your system. This is a powerful tool for triggering processes on your 
  system or even services within an RSSBus app.
&lt;/p&gt;
</description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/apps-events.rst</guid>
<link>http://www.rssbus.com/kb/articles/apps-events.rst</link>
<pubDate>Wed, 30 Nov 2011 00:00:00 GMT</pubDate>
<title>Tutorial: RSSBus AppServer Events</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>Hosting RSSBus Service-Enabled&amp;#8482; Apps in IIS allows apps to run on a server without a user logged 
      in. This tutorial guides you through the process of setting up IIS to host RSSBus Apps.</x:description>
<x:keywords>RSSBus Apps, IIS, Windows, Performance, Hosting, Solutions, apps, tips, allconnector</x:keywords>
<description>

&lt;style type=&quot;text/css&quot;&gt;
blockquote {
  background:#ddd;
  border: 1px #BBB solid;
  padding: 8px;
  margin: 1em 0;
}

blockquote h3 {
  margin-bottom:0;
  padding-top:0;
}

.ui-element {
  border-bottom: 1px dotted gray;
}
&lt;/style&gt;

&lt;script type=&quot;text/javascript&quot;&gt;
  SyntaxHighlighter.all();
&lt;/script&gt;

&lt;p&gt;
  RSSBus Apps by default runs hosted in the &lt;a href=&quot;http://rssbus.com/server/&quot;&gt;RSSBus AppServer&lt;/a&gt;. In some versions 
  of Windows, this requires a user to be logged in to run an instance of RSSBus AppServer. If this poses a problem to 
  you, you may alternatively host RSSBus Apps in Microsoft Internet Information Services (IIS).
&lt;/p&gt;

&lt;p&gt;
  This guide will show you how to host RSSBus Apps using IIS. It gives instructions for several versions of IIS and 
  Windows. If your version is not covered in this tutorial or you have other questions, please contact our 
  &lt;a href=&quot;http://rssbus.com/support/submit.aspx&quot;&gt;support team&lt;/a&gt; for further assistance.
&lt;/p&gt;

&lt;h2&gt;Table of Contents&lt;/h2&gt;

&lt;h3&gt;Hosting RSSBus Apps in IIS&lt;/h3&gt;
&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;#2008&quot;&gt;Windows 7 or Windows Server 2008 R2 (IIS 7.5)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#vista&quot;&gt;Windows Vista or Windows Server 2008 (IIS 7)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#2003&quot;&gt;Windows Server 2003 (IIS 6)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#xp&quot;&gt;Windows XP (IIS 5)&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Troubleshooting&lt;/h3&gt;
&lt;ol&gt;
  &lt;li&gt;  
    &lt;a href=&quot;#trouble2&quot;&gt;Visiting http://localhost/apps results in a &quot;Page Cannot Be Displayed&quot; error (HTTP 404 
    error).&lt;/a&gt;
  &lt;/li&gt;

  &lt;li&gt;
    &lt;a href=&quot;#trouble3&quot;&gt;Apps stop responding if I stay logged out after a while.&lt;/a&gt;
  &lt;/li&gt;
&lt;/ol&gt;


&lt;div class=&apos;clear hline&apos;&gt;&amp;nbsp;&lt;/div&gt;
&lt;h2 class=&apos;clear blue&apos; id=&quot;2008&quot;&gt;Windows 7 or Windows Server 2008 R2 (IIS 7.5)&lt;/h2&gt;

&lt;h3&gt;Create a Web Application&lt;/h3&gt;
&lt;ol&gt;
  &lt;li&gt;
    &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/bb763170.aspx&quot;&gt;Open IIS Manager&lt;/a&gt;.
  &lt;/li&gt;
  &lt;li&gt;
    In the &quot;Connections&quot; panel, expand the node for your local machine. Right-click &lt;span class=&quot;ui-element&quot;&gt;Default Web 
    Site&lt;/span&gt; (or your custom website) and choose &lt;span class=&quot;ui-element&quot;&gt;Add Application...&lt;/span&gt;
  &lt;/li&gt;
  &lt;li&gt;
    You will be prompted for several bits of info.
    &lt;ul&gt;
      &lt;li&gt;
        &lt;b&gt;Alias:&lt;/b&gt; 
        Pick an alias for the application. For our purposes, we&apos;ll go ahead and name it &lt;tt&gt;apps&lt;/tt&gt;.
      &lt;/li&gt;
      &lt;li&gt;
        &lt;b&gt;Application pool:&lt;/b&gt;
        You can assign a new application pool if you&apos;d like. For the tutorial we&apos;ll stick with the 
        &lt;tt&gt;DefaultAppPool&lt;/tt&gt;. Whichever pool you decide, note its name for the next step in this tutorial.
      &lt;/li&gt;
      &lt;li&gt;
        &lt;b&gt;Physical path:&lt;/b&gt;
        You&apos;ll need to point the physical path to the www directory of the RSSBus Apps installation. Assuming you&apos;ve 
        installed it to the default installation directory, you should specify the physical path to be 
        &lt;tt&gt;C:\Program Files (x86)\RSSBus\RSSBus Apps\www&lt;/tt&gt;.
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;2008ConfigPermissions&quot;&gt;Configure Permissions&lt;/h3&gt;

&lt;p&gt;
  We&apos;ll now need to allow the &lt;i&gt;application pool identity&lt;/i&gt; to access the RSSBus Apps application directory. First 
  we&apos;ll need to determine the identity.

  &lt;ol&gt;
    &lt;li&gt;
      In the left-hand &lt;span class=&quot;ui-element&quot;&gt;Connections&lt;/span&gt; panel of IIS, click on the 
      &lt;span class=&quot;ui-element&quot;&gt;Application Pools&lt;/span&gt; node. Right-click on the application pool we assigned RSSBus 
      Apps in the previous step, and select &lt;span class=&quot;ui-element&quot;&gt;Advanced Settings...&lt;/span&gt;
    &lt;/li&gt;

    &lt;li&gt;
      In the dialog, under the &lt;span class=&quot;ui-element&quot;&gt;Process Model&lt;/span&gt; section, note the name in the 
      &lt;span class=&quot;ui-element&quot;&gt;Identity&lt;/span&gt; field. This value is typically 
      &lt;tt&gt;NetworkService&lt;/tt&gt;, which is what we&apos;ll use here.
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/p&gt;

&lt;p&gt;
  Now, we need to assign access permissions to the application pool identity. 
  
  &lt;blockquote&gt;
    &lt;h3&gt;Using ApplicationPoolIdentity&lt;/h3&gt;
    If you are using ApplicationPoolIdentity or another 
    &lt;a href=&quot;http://technet.microsoft.com/en-us/library/dd560633(WS.10).aspx&quot;&gt;managed service account identity&lt;/a&gt; as 
    your application pool identity, you will need to follow the alternate configuration instructions 
    &lt;a href=&quot;#2008r2PermissionsAlt&quot;&gt;below&lt;/a&gt;.
  &lt;/blockquote&gt;
  
  There are two directories that we will need to give the identity access:
  
  &lt;ul&gt;
    &lt;li&gt;&lt;tt&gt;C:\Program Files (x86)\RSSBus\RSSBus Apps\www&lt;/tt&gt;&lt;/li&gt;
    &lt;li&gt;&lt;tt&gt;C:\Program Files (x86)\RSSBus\RSSBus Apps\data&lt;/tt&gt;&lt;/li&gt;
  &lt;/ul&gt;
  
  For the steps below, we will cover how to assign these permissions for the &lt;tt&gt;www&lt;/tt&gt; directory. You can repeat 
  these steps for the &lt;tt&gt;data&lt;/tt&gt; directory as well.
  
  &lt;ol&gt;
  
    &lt;li&gt;
      In Windows Explorer, navigate to &lt;tt&gt;C:\Program Files (x86)\RSSBus\RSSBus Apps\&lt;/tt&gt;. Right-click on the 
      &lt;span class=&quot;ui-element&quot;&gt;www&lt;/span&gt; directory and select &lt;span class=&quot;ui-element&quot;&gt;Properties&lt;/span&gt;.
    &lt;/li&gt;
    &lt;li&gt;
      Select the &lt;span class=&quot;ui-element&quot;&gt;Security&lt;/span&gt; tab and click the &lt;span class=&quot;ui-element&quot;&gt;Edit&lt;/span&gt; button. 
      Then click on &lt;span class=&quot;ui-element&quot;&gt;Add...&lt;/span&gt;
    &lt;/li&gt;
    &lt;li&gt;
      In the &lt;span class=&quot;ui-element&quot;&gt;Select Users or Groups&lt;/span&gt; dialog that pops up, enter the application pool 
      identity that you noted in the previous sequence of instructions. Click &lt;span class=&quot;ui-element&quot;&gt;OK&lt;/span&gt;.
    &lt;/li&gt;
    &lt;li&gt;  
      Then, in the &lt;span class=&quot;ui-element&quot;&gt;Permissions for www&lt;/span&gt; dialog, ensure the application pool identity has 
      the following permissions:
      &lt;ul&gt;
        &lt;li&gt;Modify&lt;/li&gt;
        &lt;li&gt;Read &amp;amp; Execute&lt;/li&gt;
        &lt;li&gt;List Folder Contents&lt;/li&gt;
        &lt;li&gt;Read&lt;/li&gt;
        &lt;li&gt;Write&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;Go ahead and confirm the settings.&lt;/li&gt;
  &lt;/ol&gt;
  At this point we should be good to go. Head on over to &lt;a href=&quot;http://localhost/apps&quot;&gt;http://localhost/apps&lt;/a&gt;.
&lt;/p&gt;


&lt;p&gt;
  &lt;h3 id=&quot;2008r2PermissionsAlt&quot;&gt;Alternate: Configure Permissions For A Managed Service Account Identity&lt;/h3&gt;
  &lt;ol&gt;
    &lt;li&gt;
      Open a Command Prompt as an administrator (Right click the Command Prompt link from Start &amp;rarr; Accessories and 
      choose &lt;span class=&quot;ui-element&quot;&gt;Run as Administrator&lt;/span&gt;.
    &lt;/li&gt;
    &lt;li&gt;
      Use the &lt;a href=&quot;http://technet.microsoft.com/en-us/library/cc753525(WS.10).aspx&quot;&gt;icacls&lt;/a&gt; command to grant 
      permissions to the www directory:
      &lt;pre class=&quot;brush:powershell&quot;&gt;
icacls &quot;C:\Program Files (x86)\RSSBus\RSSBus Apps\www&quot; /grant &quot;IIS APPPOOL\DefaultAppPool&quot;:(OI)(M)
      &lt;/pre&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/p&gt;

&lt;h3 id=&quot;2008PreventUnloading&quot;&gt;Prevent Application Processes from Unloading&lt;/h3&gt;
IIS unloads processes that idle too long. This may cause inactivity in RSSBus Connector apps that need to perform
background tasks.

&lt;ol&gt;
  &lt;li&gt;
    Note the Application Pool that you associated with your virtual directory: right-click on your virtual directory, 
    and select &lt;span class=&quot;ui-element&quot;&gt;Properties&lt;/span&gt;. Under the &lt;span class=&quot;ui-element&quot;&gt;Virtual Directory&lt;/span&gt; 
    tab, note the Application Pool. Close the dialog.
  &lt;/li&gt;

  &lt;li&gt;
    Open the configuration file located at &lt;tt&gt;C:\Windows\System32\inetsrv\config\applicationHost.config&lt;/tt&gt;.
  &lt;/li&gt;

  &lt;li&gt;
    In the appropriate &lt;tt&gt;applicationPools&lt;/tt&gt; entry, add &lt;tt&gt;startMode=&quot;AlwaysRunning&quot;&lt;/tt&gt; so it appears as such:
    &lt;pre class=&quot;brush:xml&quot;&gt;
&amp;lt;applicationPools&gt;
  &amp;lt;add name=&quot;DefaultAppPool&quot; managedRuntimeVersion=&quot;v4.0&quot; startMode=&quot;AlwaysRunning&quot; /&gt;
&amp;lt;/applicationPools&gt;&lt;/pre&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
  At this point we should be good to go. Head on over to &lt;a href=&quot;http://localhost/apps&quot;&gt;http://localhost/apps&lt;/a&gt;.
&lt;/p&gt;

&lt;div class=&apos;clear hline&apos;&gt;&amp;nbsp;&lt;/div&gt;
&lt;h2 class=&apos;clear blue&apos; id=&quot;vista&quot;&gt;Windows Vista or Windows Server 2008 (IIS 7)&lt;/h2&gt;

&lt;h3&gt;Create a Web Application&lt;/h3&gt;
&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/bb763170.aspx&quot;&gt;Open IIS Manager&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;
    In the &lt;span class=&quot;ui-element&quot;&gt;Connections&lt;/span&gt; panel, expand the node for your local machine. Right-click 
    &lt;span class=&quot;ui-element&quot;&gt;Default Web Site&lt;/span&gt; (or your custom website) and choose 
    &lt;span class=&quot;ui-element&quot;&gt;Add Application...&lt;/span&gt;
  &lt;/li&gt;
  &lt;li&gt;
    You will be prompted for several bits of info.
    &lt;ul&gt;
      &lt;li&gt;
        &lt;b&gt;Alias:&lt;/b&gt; 
        Pick an alias for the application. For our purposes, we&apos;ll go ahead and name it &lt;tt&gt;apps&lt;/tt&gt;.
      &lt;/li&gt;
      &lt;li&gt;
        &lt;b&gt;Application pool:&lt;/b&gt;
        You can assign a new application pool if you&apos;d like. For the tutorial we&apos;ll stick with the 
        &lt;tt&gt;DefaultAppPool&lt;/tt&gt;. Whichever pool you decide, note its name for the next step in this tutorial.
      &lt;/li&gt;
      &lt;li&gt;
        &lt;b&gt;Physical path:&lt;/b&gt; 
        You&apos;ll need to point the physical path to the www directory of the RSSBus Apps installation. Assuming you&apos;ve 
        installed it to the default installation directory, you should specify the physical path as 
        &lt;tt&gt;C:\Program Files (x86)\RSSBus\RSSBus Apps\www&lt;/tt&gt;.
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;vistaConfigPermissions&quot;&gt;Configure Permissions&lt;/h3&gt;

&lt;p&gt;
  We&apos;ll now need to allow the &lt;i&gt;application pool identity&lt;/i&gt; to access the RSSBus Apps application directory. First 
  we&apos;ll need to determine the identity.

  &lt;ol&gt;
    &lt;li&gt;
      In the &lt;span class=&quot;ui-element&quot;&gt;Connections&lt;/span&gt; panel of IIS, click on the 
      &lt;span class=&quot;ui-element&quot;&gt;Application Pools&lt;/span&gt; node. Right-click on the application pool we&apos;ve assigned RSSBus 
      Apps, and select &lt;span class=&quot;ui-element&quot;&gt;Advanced Settings...&lt;/span&gt;
    &lt;/li&gt;

    &lt;li&gt;
      In the dialog, under the &lt;span class=&quot;ui-element&quot;&gt;Process Model&lt;/span&gt; section, note the name in the 
      &lt;span class=&quot;ui-element&quot;&gt;Identity&lt;/span&gt; field. This value is typically &lt;tt&gt;NetworkService&lt;/tt&gt;, which is what 
      we&apos;ll use here.
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/p&gt;

&lt;p&gt;
  Now, we need to assign access permissions to the application pool identity. There are two directories that we will 
  need to give the identity access:
  &lt;ul&gt;
    &lt;li&gt;&lt;tt&gt;C:\Program Files (x86)\RSSBus\RSSBus Apps\www&lt;/tt&gt;&lt;/li&gt;
    &lt;li&gt;&lt;tt&gt;C:\Program Files (x86)\RSSBus\RSSBus Apps\data&lt;/tt&gt;&lt;/li&gt;
  &lt;/ul&gt;
  
  For the steps below, we will cover how to assign these permissions for the &lt;span class=&quot;ui-element&quot;&gt;www&lt;/span&gt; 
  directory. You can repeat these steps for the &lt;span class=&quot;ui-element&quot;&gt;data&lt;/span&gt; directory as well.
  
  &lt;ol&gt;
    &lt;li&gt;
      In Windows Explorer, navigate to &lt;tt&gt;C:\Program Files (x86)\RSSBus\RSSBus Apps\&lt;/tt&gt;. Right-click on the 
      &lt;span class=&quot;ui-element&quot;&gt;www&lt;/span&gt; directory and select &lt;span class=&quot;ui-element&quot;&gt;Properties&lt;/span&gt;.
    &lt;/li&gt;
    &lt;li&gt;
      Select the &lt;span class=&quot;ui-element&quot;&gt;Security&lt;/span&gt; tab and click the &lt;span class=&quot;ui-element&quot;&gt;Edit&lt;/span&gt; button. 
      Then click on &lt;span class=&quot;ui-element&quot;&gt;Add...&lt;/span&gt;
    &lt;/li&gt;
    &lt;li&gt;
      In the &lt;span class=&quot;ui-element&quot;&gt;Select Users or Groups&lt;/span&gt; dialog that pops up, enter the application pool 
      identity that you noted in the previous sequence of instructions. Click &lt;span class=&quot;ui-element&quot;&gt;OK&lt;/span&gt;.
    &lt;/li&gt;
    &lt;li&gt;  
      Then, in the &lt;span class=&quot;ui-element&quot;&gt;Permissions for www&lt;/span&gt; dialog, ensure the application pool identity has 
      the following permissions:
      &lt;ul&gt;
        &lt;li&gt;Modify&lt;/li&gt;
        &lt;li&gt;Read &amp;amp; Execute&lt;/li&gt;
        &lt;li&gt;List Folder Contents&lt;/li&gt;
        &lt;li&gt;Read&lt;/li&gt;
        &lt;li&gt;Write&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;Go ahead and confirm the settings.&lt;/li&gt;
  &lt;/ol&gt;
&lt;/p&gt;

&lt;p&gt;
  At this point we should be good to go. Head on over to &lt;a href=&quot;http://localhost/apps&quot;&gt;http://localhost/apps&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
  If you&apos;ve run into any trouble during this guide, please see the &lt;a href=&quot;#troubleshooting&quot;&gt;Troubleshooting&lt;/a&gt;
  section.
&lt;/p&gt;

  
&lt;div class=&apos;clear hline&apos;&gt;&amp;nbsp;&lt;/div&gt;
&lt;h2 class=&apos;clear blue&apos; id=&quot;2003&quot;&gt;Windows Server 2003 (IIS 6)&lt;/h2&gt;

&lt;h3&gt;Create A Virtual Directory&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/bb763170.aspx&quot;&gt;Open IIS Manager&lt;/a&gt;.
  &lt;/li&gt;
  
  &lt;li&gt;
    In IIS Manager, in the left-hand panel, navigate to the &lt;span class=&quot;ui-element&quot;&gt;Default Web Site&lt;/span&gt; node at 
    &lt;span class=&quot;ui-element&quot;&gt;Console Root &amp;rarr; Local Computer &amp;rarr; Default Web Site&lt;/span&gt;.
  &lt;/li&gt;
  
  &lt;li&gt;
    Right-click on &lt;span class=&quot;ui-element&quot;&gt;Default Web Site&lt;/span&gt; and select 
    &lt;span class=&quot;ui-element&quot;&gt;New &amp;rarr; Virtual Directory&lt;/span&gt;.
  &lt;/li&gt;
  
  &lt;li&gt;
    IIS Manager will now take you through the &lt;span class=&quot;ui-element&quot;&gt;Virtual Directory Creation Wizard&lt;/span&gt;. Here are the values you should
    provide for each prompt.
    &lt;ol&gt;
      &lt;li&gt;
        &lt;b&gt;Alias:&lt;/b&gt;
        Whichever name you prefer. For this article, we&apos;ll specify &lt;tt&gt;apps&lt;/tt&gt;.
      &lt;/li&gt;
      &lt;li&gt;
        &lt;b&gt;Directory:&lt;/b&gt;
        &lt;tt&gt;C:\Program Files\RSSBus\RSSBus Apps\www&lt;/tt&gt;.
      &lt;/li&gt;
      &lt;li&gt;
        &lt;b&gt;Access Permissions:&lt;/b&gt;
        &lt;ul&gt;
          &lt;li&gt;Read&lt;/li&gt;
          &lt;li&gt;Run&lt;/li&gt;
          &lt;li&gt;Execute&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ol&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Map Application File Types&lt;/h3&gt;
Now that you&apos;ve completed the &lt;span class=&quot;ui-element&quot;&gt;Virtual Directory Creation Wizard&lt;/span&gt;, you will need to associate RSSBus file types 
with IIS.

&lt;ol&gt;
  &lt;li&gt;
    Right-click on the virtual directory you just created and select &lt;span class=&quot;ui-element&quot;&gt;Properties&lt;/span&gt;.
  &lt;/li&gt;
  
  &lt;li&gt;
    In the &lt;span class=&quot;ui-element&quot;&gt;Properties&lt;/span&gt; popup, under the &lt;span class=&quot;ui-element&quot;&gt;Virtual Directory&lt;/span&gt; 
    tab, click the &lt;span class=&quot;ui-element&quot;&gt;Configure&lt;/span&gt; button.
  &lt;/li&gt;
  
  &lt;li&gt;
    You will need to add two application extension mappings: &lt;span class=&quot;ui-element&quot;&gt;.rst&lt;/span&gt; and 
    &lt;span class=&quot;ui-element&quot;&gt;.rsb&lt;/span&gt;. You will also need to specify a path to the executable that handles these 
    files. This path is dependent on the version of ASP.NET you are using.
    Assuming you are using v2.0, the full path will look like 
    &lt;tt&gt;C:\WINDOWS\Microsoft.NET\Framework\v2.0\aspnet_isapi.dll&lt;/tt&gt;. You can adjust the path according to the correct
    version. Additionally, note that if your system runs on a 64-bit CPU, &quot;Framework&quot; instead should appear as 
    &quot;Framework64&quot;.
    
    &lt;blockquote&gt;
      &lt;h3&gt;How To Determine Your Version of ASP.NET&lt;/h3&gt;
      Go to the &lt;span class=&quot;ui-element&quot;&gt;Properties&lt;/span&gt; popup for the RSSBus Apps virtual directory you created. 
      Select the &lt;span class=&quot;ui-element&quot;&gt;ASP.NET&lt;/span&gt; tab. Note the &lt;span class=&quot;ui-element&quot;&gt;ASP.NET version&lt;/span&gt;. 
      Be aware that RSSBus Apps requires a minimum ASP.NET version of 2.0.
    &lt;/blockquote&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;!-- &lt;h3 id=&quot;2003PreventUnloading&quot;&gt;Prevent Application Processes from Unloading&lt;/h3&gt;
IIS will unload a process that idles too long. This may cause complications interacting with RSSBus Connector apps.

&lt;ol&gt;
  &lt;li&gt;
    Note the Application Pool that you associated with your virtual directory: right-click on your virtual directory, 
    and select &quot;Properties&quot;. Under the &quot;Virtual Directory&quot; tab, note the Application Pool. Close the dialog.
  &lt;/li&gt;

  &lt;li&gt;
    Back in the main window, right click on the Application Pool associated with your virtual directory, and select
    &quot;Properties&quot;. In the dialog that pops up, under the &quot;Recycling&quot; tab, disable the checkbox for &quot;Recycle Worker
    Processes&quot;.
  &lt;/li&gt;
&lt;/ol&gt; --&gt;

&lt;h3&gt;Configure Permissions&lt;/h3&gt;

&lt;p&gt;
  We&apos;ll now need to allow the &lt;i&gt;application pool identity&lt;/i&gt; to access the RSSBus Apps application directory. First 
  we&apos;ll need to determine the identity.

  &lt;ol&gt;
    &lt;li&gt;
      Right-click on the virtual directory representing our AppServer and select 
      &lt;span class=&quot;ui-element&quot;&gt;Properties&lt;/span&gt;.
    &lt;/li&gt;

    &lt;li&gt;
      In the &lt;span class=&quot;ui-element&quot;&gt;Virtual Directory&lt;/span&gt; tab, note the value in the 
      &lt;span class=&quot;ui-element&quot;&gt;Application pool&lt;/span&gt; field. This value is typically &lt;tt&gt;DefaultAppPool&lt;/tt&gt;.
    &lt;/li&gt;
    
    &lt;li&gt;
      Now cancel out of this dialog, and expand the &lt;span class=&quot;ui-element&quot;&gt;Application Pools&lt;/span&gt; node in the 
      left-hand navigation panel. Right-click on the application pool you identified in the previous step and select
      &lt;span class=&quot;ui-element&quot;&gt;Properties&lt;/span&gt;.
    &lt;/li&gt;
    
    &lt;li&gt;
      Note the &lt;span class=&quot;ui-element&quot;&gt;Application pool identity&lt;/span&gt;.
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/p&gt;

&lt;p&gt;
  Now, we need to assign access permissions to the application pool identity. There are two directories that we will 
  need to give the identity access:
  
  &lt;ul&gt;
    &lt;li&gt;&lt;tt&gt;C:\Program Files (x86)\RSSBus\RSSBus Apps\www&lt;/tt&gt;&lt;/li&gt;
    &lt;li&gt;&lt;tt&gt;C:\Program Files (x86)\RSSBus\RSSBus Apps\data&lt;/tt&gt;&lt;/li&gt;
  &lt;/ul&gt;
  
  For the steps below, we will cover how to assign these permissions for the &lt;span class=&quot;ui-element&quot;&gt;www&lt;/span&gt; 
  directory. You can repeat these steps for the &lt;span class=&quot;ui-element&quot;&gt;data&lt;/span&gt; directory as well.
  
  &lt;ol&gt;
  
    &lt;li&gt;
      In Windows Explorer, navigate to &lt;tt&gt;C:\Program Files (x86)\RSSBus\RSSBus Apps\&lt;/tt&gt;. Right-click on the 
      &lt;span class=&quot;ui-element&quot;&gt;www&lt;/span&gt; directory and select &lt;span class=&quot;ui-element&quot;&gt;Properties&lt;/span&gt;.
    &lt;/li&gt;
    
    &lt;li&gt;
      Select the &lt;span class=&quot;ui-element&quot;&gt;Security&lt;/span&gt; tab and click the &lt;span class=&quot;ui-element&quot;&gt;Edit&lt;/span&gt; button. 
      Then click on &lt;span class=&quot;ui-element&quot;&gt;Add...&lt;/span&gt;
    &lt;/li&gt;
    
    &lt;li&gt;
      In the &quot;Select Users or Groups&quot; dialog that pops up, enter the application pool identity that you noted in the 
      previous sequence of instructions. Click &lt;span class=&quot;ui-element&quot;&gt;OK&lt;/span&gt;.
    &lt;/li&gt;
    
    &lt;li&gt;  
      Then, in the &lt;span class=&quot;ui-element&quot;&gt;Permissions for www&lt;/span&gt; dialog, ensure the application pool identity has 
      the following permissions:
      
      &lt;ul&gt;
        &lt;li&gt;Modify&lt;/li&gt;
        &lt;li&gt;Read &amp;amp; Execute&lt;/li&gt;
        &lt;li&gt;List Folder Contents&lt;/li&gt;
        &lt;li&gt;Read&lt;/li&gt;
        &lt;li&gt;Write&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/li&gt;
    
    &lt;li&gt;
      Go ahead and confirm the settings.
    &lt;/li&gt;
    
  &lt;/ol&gt;
  At this point we should be good to go. Head on over to &lt;a href=&quot;http://localhost/apps&quot;&gt;http://localhost/apps&lt;/a&gt;.
&lt;/p&gt;

&lt;h3&gt;You&apos;re Done!&lt;/h3&gt;

&lt;p&gt;
  Head on over to &lt;a href=&quot;http://localhost/apps&quot;&gt;http://localhost/apps&lt;/a&gt; and check out your handiwork.
&lt;/p&gt;

&lt;p&gt;
  If you&apos;ve run into any trouble during this guide, please see the &lt;a href=&quot;#troubleshooting&quot;&gt;Troubleshooting&lt;/a&gt;
  section.
&lt;/p&gt;

&lt;div class=&apos;clear hline&apos;&gt;&amp;nbsp;&lt;/div&gt;
&lt;h2 class=&apos;clear blue&apos; id=&quot;xp&quot;&gt;Windows XP (IIS 5)&lt;/h2&gt;

&lt;h3&gt;Create A Virtual Directory&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/bb763170.aspx&quot;&gt;Open IIS Manager&lt;/a&gt;.
  &lt;/li&gt;
  
  &lt;li&gt;
    In IIS Manager, in the left-hand panel, navigate to the &lt;span class=&quot;ui-element&quot;&gt;Default Web Site&lt;/span&gt; node at 
    &lt;span class=&quot;ui-element&quot;&gt;Console Root &amp;rarr; Local Computer &amp;rarr; Default Web Site&lt;/span&gt;.
  &lt;/li&gt;
  
  &lt;li&gt;
    Right-click on &lt;span class=&quot;ui-element&quot;&gt;Default Web Site&lt;/span&gt; and select 
    &lt;span class=&quot;ui-element&quot;&gt;New &amp;rarr; Virtual Directory&lt;/span&gt;.
    &lt;img src=&quot;apps-in-iis.2003.newApplication.png&quot; /&gt;
  &lt;/li&gt;
  
  &lt;li&gt;
    IIS Manager will now take you through the &lt;span class=&quot;ui-element&quot;&gt;Virtual Directory Creation Wizard&lt;/span&gt;. Here are the values you should
    provide for each prompt.
    &lt;ol&gt;
      &lt;li&gt;
        &lt;b&gt;Alias:&lt;/b&gt;
        Whichever name you prefer. For this article, we&apos;ll specify &lt;tt&gt;apps&lt;/tt&gt;.
      &lt;/li&gt;
      &lt;li&gt;
        &lt;b&gt;Directory:&lt;/b&gt;
        &lt;tt&gt;C:\Program Files\RSSBus\RSSBus Apps\www&lt;/tt&gt;.
      &lt;/li&gt;
      &lt;li&gt;
        &lt;b&gt;Access Permissions:&lt;/b&gt;
        &lt;ul&gt;
          &lt;li&gt;Read&lt;/li&gt;
          &lt;li&gt;Run&lt;/li&gt;
          &lt;li&gt;Execute&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ol&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Map Application File Types&lt;/h3&gt;
Now that you&apos;ve completed the &lt;span class=&quot;ui-element&quot;&gt;Virtual Directory Creation Wizard&lt;/span&gt;, you will need to 
associate RSSBus file types with IIS.

&lt;ol&gt;
  &lt;li&gt;
    Right-click on the virtual directory you just created and select &lt;span class=&quot;ui-element&quot;&gt;Properties&lt;/span&gt;.
  &lt;/li&gt;
  
  &lt;li&gt;
    In the &lt;span class=&quot;ui-element&quot;&gt;Properties&lt;/span&gt; popup, under the &lt;span class=&quot;ui-element&quot;&gt;Virtual Directory&lt;/span&gt; 
    tab, click the &lt;span class=&quot;ui-element&quot;&gt;Configure&lt;/span&gt; button.
  &lt;/li&gt;
  
  &lt;li&gt;
    You will need to add two application extension mappings: &lt;span class=&quot;ui-element&quot;&gt;.rst&lt;/span&gt; and &lt;span class=&quot;ui-element&quot;&gt;.rsb&lt;/span&gt;. You will also need to specify 
    a path to the executable that handles these files. This path is dependent on the version of ASP.NET you are using.
    Assuming you are using v2.0, the full path will look like 
    &lt;tt&gt;C:\WINDOWS\Microsoft.NET\Framework\v2.0\aspnet_isapi.dll&lt;/tt&gt;. You can adjust the path according to the correct
    version. Additionally, note that if your system runs on a 64-bit CPU, &quot;Framework&quot; instead should appear as 
    &quot;Framework64&quot;.
    
    &lt;img src=&quot;apps-in-iis.2003.extensionMappings.png&quot; /&gt;
    
    &lt;blockquote&gt;
      &lt;h3&gt;How To Determine Your Version of ASP.NET&lt;/h3&gt;
      Go to the &lt;span class=&quot;ui-element&quot;&gt;Properties&lt;/span&gt; popup for the RSSBus Apps virtual directory you created. 
      Select the &lt;span class=&quot;ui-element&quot;&gt;ASP.NET&lt;/span&gt; tab. Note the &lt;span class=&quot;ui-element&quot;&gt;ASP.NET version&lt;/span&gt;. 
      Be aware that RSSBus Apps requires a minimum ASP.NET version of 2.0.
    &lt;/blockquote&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;You&apos;re Done!&lt;/h3&gt;

&lt;p&gt;
  Head on over to &lt;a href=&quot;http://localhost/apps&quot;&gt;http://localhost/apps&lt;/a&gt; and check out your handiwork.
&lt;/p&gt;

&lt;p&gt;
  If you&apos;ve run into any trouble during this guide, please see the &lt;a href=&quot;#troubleshooting&quot;&gt;Troubleshooting&lt;/a&gt;
  section.
&lt;/p&gt;


&lt;div class=&apos;clear hline&apos;&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1 class=&apos;clear blue&apos; id=&quot;troubleshooting&quot;&gt;Troubleshooting&lt;/h1&gt;

&lt;h3 id=&quot;trouble2&quot;&gt;
  Visiting http://localhost/apps results in a &lt;span class=&quot;ui-element&quot;&gt;Page Cannot Be Displayed&lt;/span&gt; error 
  (HTTP 404 error).
&lt;/h3&gt;

&lt;p&gt;
  This can happen if ASP.NET is not enabled correctly. To confirm this, visit 
  &lt;a href=&quot;http://localhost/apps/favicon.ico&quot;&gt;http://localhost/apps/favicon.ico&lt;/a&gt;. If this page loads successfully, 
  then ASP.NET is not properly enabled.
&lt;/p&gt;

&lt;p&gt;
  If you are using Windows Server 2003 open the Internet Information Services manager via the steps mentioned in the 
  setup and check the Web Service Extensions listed under the local computer. Make sure ASP.NET v2.0 is enabled. You
  may also need to take the step below.
&lt;/p&gt;

&lt;p&gt;
  For other environments, running IIS6 or lower, open the windows command prompt and navigate to the .NET Framework 
  version installation &lt;tt&gt;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727&lt;/tt&gt; and run the command 
  &lt;tt&gt;aspnet_regiis -i&lt;/tt&gt;. You may have to change &lt;tt&gt;Framework&lt;/tt&gt; to &lt;tt&gt;Framework64&lt;/tt&gt; if you are using a 64-bit
  processor. You should see something like this: 

  &lt;code&gt;&lt;pre&gt;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727&amp;gt;aspnet_regiis -i
Start installing ASP.NET (2.0.50727).
.......
Finished installing ASP.NET (2.0.50727).&lt;/pre&gt;&lt;/code&gt;
  
  Then restart IIS by issuing the &lt;tt&gt;iisreset&lt;/tt&gt; command. You should see something like this: 
  
  &lt;code&gt;&lt;pre&gt;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727&amp;gt;iisreset

Attempting stop...
Internet services successfully stopped
Attempting start...
Internet services successfully restarted&lt;/pre&gt;&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
For environments, running IIS7 or higher, follow the steps below to enable ASP.NET:

  &lt;ol&gt;
    &lt;li&gt;Open Control Panel&lt;/li&gt;
    &lt;li&gt;Go to Programs (or Programs and Features)&lt;/li&gt;
    &lt;li&gt;Choose &lt;span class=&quot;ui-element&quot;&gt;Turn Windows features on or off&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;Expand &lt;span class=&quot;ui-element&quot;&gt;Internet Information Services&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;Expand &lt;span class=&quot;ui-element&quot;&gt;World Wide Web Services&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;Expand &lt;span class=&quot;ui-element&quot;&gt;Application Development Features&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;Check the box next to ASP.NET&lt;/li&gt;
    &lt;li&gt;Click &lt;span class=&quot;ui-element&quot;&gt;OK&lt;/span&gt;, wait for Windows to install the necessary features&lt;/li&gt;
  &lt;/ol&gt;

&lt;/p&gt;

&lt;div class=&apos;clear hline&apos;&gt;&amp;nbsp;&lt;/div&gt;
&lt;h3 id=&quot;trouble3&quot;&gt;Apps stop responding some time after I log out.&lt;/h3&gt;

&lt;p&gt;
  IIS is possibly unloading your application after it times out from inactivity. To prevent this you will need to run
  IIS 7.5 or higher and make a configuration change. Follow these instructions &lt;a href=&quot;#2008PreventUnloading&quot;&gt;here&lt;/a&gt;.
&lt;/ul&gt;
</description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/apps-in-iis.rst</guid>
<link>http://www.rssbus.com/kb/articles/apps-in-iis.rst</link>
<pubDate>Thu, 10 Nov 2011 00:00:00 GMT</pubDate>
<title>Tutorial: Hosting RSSBus Apps in IIS</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>Security is a serious concern for any system administrator. RSSBus apps typically store, modify, and 
    share sensitive information that shouldn&amp;quot;t fall into the wrong hands. Obviously, precautions must be taken when 
    deploying RSSBus AppServer. This document discussions the provisions RSSBus AppServer supplies to secure connections 
    to its host.</x:description>
<x:keywords>Security, AppServer, SSL, Authtoken, Solutions, apps, tips, allconnector</x:keywords>
<description>

&lt;style type=&quot;text/css&quot;&gt;
  h3 {
    margin-bottom: 0;
  }
  
  .section {
    margin-left:1em;
	margin-bottom: 1em;
  }
  
  .section p, .section ol {
    display: none;
  }
  
  .section &gt; a {
	text-decoration:none;
  }
  .section &gt; a:hover {
	text-decoration:underline;
  }
&lt;/style&gt;

&lt;script language=&quot;javascript&quot;&gt;
  Event.observe(document, &quot;click&quot;, function(event) {
    if (event.element().up().className == &quot;section&quot;)
      event.element().up().childElements().each(function (o) {
        o.setStyle({ display: &quot;inherit&quot; });
      });
  });
&lt;/script&gt;


&lt;p&gt;
  Security is a serious concern for any system administrator.
  RSSBus apps typically store, modify, and share usernames, passwords, and a whole host of other information that should 
  remain under lock and key. Precautions clearly must be taken before deploying RSSBus AppServer. This document 
  discusses the provisions RSSBus AppServer offers to secure connections with its host environment.
&lt;/p&gt;

&lt;h2&gt;Enable SSL&lt;/h2&gt;

&lt;p&gt;
  SSL (or Secure Sockets Layer) encrypts connections between a client and your server. This protects connections from
  network listeners and man-in-the-middle attacks. It also allows users to confirm the identity of your server. To 
  enable SSL on your server, choose the instructions below that match your environment.
&lt;/p&gt;

&lt;h3&gt;Windows&lt;/h3&gt;
&lt;div class=&quot;section&quot;&gt;
  &lt;a href=&quot;javascript:void(0)&quot;&gt;- Enabling SSL in RSSBus AppServer&lt;/a&gt;

  &lt;p&gt;&lt;br&gt;
    Go to the RSSBus AppServer Options dialog by right-clicking the AppServer icon in the Windows taskbar icon tray and 
    selecting &lt;b&gt;Server Options...&lt;/b&gt;
  &lt;/p&gt;

  &lt;p&gt;
    For a completely secure sever, you may want to consider disabling &lt;b&gt;Plain Text&lt;/b&gt; access in the dialog.
    Enable the &lt;b&gt;Use SSL&lt;/b&gt; checkbox, and then click the button next to the &lt;b&gt;SSL Server Certificate&lt;/b&gt; field to 
    select a certificate.
  &lt;/p&gt;

  &lt;p&gt;&lt;img src=&quot;apps-secure-server-options-panel.png&quot;/&gt;&lt;/p&gt;

  &lt;p&gt;
    A dialog will pop up listing the certificates in your system store. You also have the option to create your own 
    self-signed certificate with the &lt;b&gt;Create Certificate&lt;/b&gt; button at the bottom.
  &lt;/p&gt;

  &lt;p&gt;
    After you choose a certificate, click &lt;b&gt;Apply&lt;/b&gt; to save your changes. You are now running RSSBus AppServer over
    HTTPS. Do note that users will now have to prepend URLS with HTTPS instead of HTTP to now access your server.
  &lt;/p&gt;
&lt;/div&gt;


&lt;div class=&quot;section&quot;&gt;
  &lt;a href=&quot;javascript:void(0)&quot;&gt;- Enabling SSL in IIS&lt;/a&gt;

  &lt;p&gt;&lt;br&gt;
    The following steps assume you already have a certificate you can use to enable SSL on your server.
  &lt;/p&gt;

  &lt;ol&gt;
    &lt;li&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/bb763170.aspx&quot;&gt;Open IIS Manager&lt;/a&gt;.&lt;/li&gt;

    &lt;li&gt;
      Select your server&apos;s node from the left-hand panel, and then click the &lt;b&gt;Bindings...&lt;/b&gt; link on the right-hand
      side.
    &lt;/li&gt;

    &lt;li&gt;
      In the dialog that pops up, click the &lt;b&gt;Add...&lt;/b&gt; button. Select &lt;b&gt;https&lt;/b&gt; from the drop-down menu, and then 
      select a server certificate. Click &lt;b&gt;OK&lt;/b&gt; to save the changes and then close the popup.
    &lt;/li&gt;

    &lt;li&gt;
      Now, with your server&apos;s node still selected, double-click the &lt;b&gt;SSL Settings&lt;/b&gt; icon under the &lt;b&gt;IIS&lt;/b&gt;
      heading. Enable the &lt;b&gt;Require SSL&lt;/b&gt; checkbox, and click &lt;b&gt;Apply&lt;/b&gt; in the right-hand panel.
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;

&lt;h3&gt;Java&lt;/h3&gt;
&lt;div class=&quot;section&quot;&gt;
  &lt;a href=&quot;javascript:void(0)&quot;&gt;- Enabling SSL in Jetty&lt;/a&gt;

  &lt;p&gt;&lt;br&gt;
    To enable SSL in Jetty, you must generate a certificate and modify the server configuration. For instructions, see 
    &lt;a href=&quot;http://wiki.eclipse.org/Jetty/Howto/Configure_SSL&quot;&gt;this&lt;/a&gt; guide from the Jetty website.
  &lt;/p&gt;
&lt;/div&gt;


&lt;h2&gt;Authtokens&lt;/h2&gt;

&lt;p&gt;
  Authtokens are unique identifiers that authenticate authorized users to run services without logging in. This is
  useful for automating or integrating with other processes.
&lt;/p&gt;

&lt;p&gt;
  To authorize a user to run service using an authtoken, log in as an administrator, and then navigate to the desired 
  service. Scroll down to the &lt;b&gt;Security&lt;/b&gt; section and select a user from the &lt;b&gt;Add User&lt;/b&gt; drop-down.
&lt;/p&gt;

&lt;p&gt;
  To run the service, add the HTTP header &lt;tt&gt;x-rssbus-authtoken&lt;/tt&gt; with the desired authtoken as part of the HTTP 
  request. Alternatively, you may specify the authtoken as &lt;tt&gt;@authtoken&lt;/tt&gt; as part of HHTP form-post data or a query
  parameter.
&lt;/p&gt;

&lt;p&gt;
  For more information about services in RSSBus Apps, please see &lt;a href=&quot;/kb/articles/apps-serviceshowto.rst&quot;&gt;this&lt;/a&gt; 
  knowledge base article.
&lt;/p&gt;
</description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/apps-secure-server.rst</guid>
<link>http://www.rssbus.com/kb/articles/apps-secure-server.rst</link>
<pubDate>Wed, 30 Nov 2011 00:00:00 GMT</pubDate>
<title>Discussion: Security and RSSBus AppServer</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>RSSBus Solutions based on the RSSBus AppServer framework allow you to securely access your business data 
    from anywhere on the web. Exposed services give you programmatic access to your apps with powerful suite of 
    commands. In this tutorial, we will use AS2 Connector, one of the solutions built on the RSSBus AppServer platform, 
    and list the available logs with the List Logs service.</x:description>
<x:keywords>RSSBus Apps, Services, as2connector, AS2 Connect, solutions, tips, AS2, Solutions, apps, tips, allconnector</x:keywords>
<description>
  
  &lt;p&gt;
    &lt;a href=&apos;http://www.rssbus.com/solutions/&apos;&gt;RSSBus Solutions&lt;/a&gt; based on the RSSBus AppServer framework allow you to 
    securely access your business data from anywhere on the web. Exposed services give you programmatic access to your
    apps with powerful suite of commands. In this tutorial, we will use 
    &lt;a href=&apos;http://www.rssbus.com/solutions/as2&apos;&gt;AS2 Connector&lt;/a&gt;, one of the solutions built on the RSSBus AppServer 
    platform, and list the available logs with the List Logs service.
  &lt;/p&gt;

  &lt;h2&gt;Listing Logs Using AS2 Connector&lt;span class=&quot;se-text&quot;&gt;SE&lt;/span&gt;&lt;/h2&gt;

  &lt;p&gt;
    In your browser, navigate to your RSSBus AppServer host. Enter your credentials if necessary. Then open the AS2
    Connector app from the homepage.
  &lt;/p&gt;

  &lt;p&gt;&lt;img src=&quot;apps-serviceshowto-homepage.png&quot;/&gt;&lt;/p&gt;

  &lt;p&gt;
    Click on the &quot;Services&quot; link in the blue navigation bar up top to go to the Services page. From here you are 
    presented with a brief explanation of this page plus a list of services available to you on the left hand side.
  &lt;/p&gt;

  &lt;p&gt;&lt;img src=&quot;apps-serviceshowto-services.png&quot;/&gt;&lt;/p&gt;

  &lt;p&gt;
    Since we&apos;re adding a listing the available logs, go ahead and click on the &quot;List Logs&quot; service. The service appears
    in full, plus a description, its required parameters, and optional parameters below that. At minimum we need to 
    provide the name of a partner in the Name input.
  &lt;/p&gt;

  &lt;p&gt;&lt;img src=&quot;apps-serviceshowto-addpo.png&quot;/&gt;&lt;/p&gt;

  &lt;p&gt;
    When you&#65533;re ready, click the &quot;Call Service&quot; button. A results page will appear listing the various logs that AS2
    Connector writes to.
  &lt;/p&gt;

  &lt;p&gt;&lt;img src=&quot;apps-serviceshowto-addporesults.png&quot;/&gt;&lt;/p&gt;

  &lt;p&gt;
    Congratulations! You have now listed the logs of AS2 Connector using a service. Every service in all apps of the
    RSSBus AppServer platform is accessible via HTTP get requests. Even better, you can retrieve the output of these
    services in a variety of formats, including:
    
    &lt;ul&gt;
      &lt;li&gt;RSS&lt;/li&gt;
      &lt;li&gt;HTML&lt;/li&gt;
      &lt;li&gt;CSV&lt;/li&gt;
      &lt;li&gt;ATOM&lt;/li&gt;
      &lt;li&gt;SOAP&lt;/li&gt;
      &lt;li&gt;JSON&lt;/li&gt;
      &lt;li&gt;Excel&lt;/li&gt;
      &lt;li&gt;TSV&lt;/li&gt;
    &lt;/ul&gt;
    
    To change the output format, you can either select the format from the dropdown menu that appears under the &lt;b&gt;Run 
    Service&lt;/b&gt; button on the service page, or you can append &lt;tt&gt;&amp;@rss&lt;/tt&gt; (if RSS is the desired format) to the end 
    of URL that locates the service.
  &lt;/p&gt;</description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/apps-serviceshowto.rst</guid>
<link>http://www.rssbus.com/kb/articles/apps-serviceshowto.rst</link>
<pubDate>Mon, 28 Nov 2011 00:00:00 GMT</pubDate>
<title>How To Use Services With RSSBus Service-Enabled Solutions</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>RSSBus AppServer offers a robust suite of user managements tools. Administrators can add and remove 
    users, control what apps users use, and choose the specific areas of apps users can access. This FAQ covers the 
    general concepts of user administration for RSSBus AppServer.</x:description>
<x:keywords>Apps, AppServer, Users, Managing Users, Permsissions, Authorization, Access, Authtokens, Authorization Tokens, Roles, Administration, Services, tips, Solutions, tips, allconnector</x:keywords>
<description>

&lt;style type=&quot;text/css&quot;&gt;
  h3 {
    margin-bottom: 0;
  }
&lt;/style&gt;

&lt;p&gt;
  RSSBus AppServer offers a robust suite of user managements tools. Administrators can add and remove users, control 
  what apps users use, and choose the specific areas of apps users can access. This FAQ covers the general concepts 
  of user administration for RSSBus AppServer.
&lt;/p&gt;

&lt;h3&gt;User Management FAQ&lt;/h3&gt;
&lt;ul class=&quot;toggle-list arrow_list&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#userRoles&quot;&gt;What kinds of user roles does RSSBus AppServer provide?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#whatAreServices&quot;&gt;What are services?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#executeServices&quot;&gt;How can a user execute an app&apos;s service while logged out?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#authtoken&quot;&gt;What is an &quot;authtoken&quot;?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#appsServicesIndependent&quot;&gt;Do authorizations for an app and its services work independent of each other?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#changeAuthtoken&quot;&gt;How do I change a user&apos;s authtoken?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#runApp&quot;&gt;How do I authorize a user to run an app?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#changeAuthLevel&quot;&gt;How do I grant or revoke administrative access for a user?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#userModifyAppSettings&quot;&gt;What kinds of users can modify an app&apos;s settings?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#needPassword&quot;&gt;Do users need passwords?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#changeProfile&quot;&gt;What information can a user change on his or her own profile?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#renameUser&quot;&gt;Are users renamable?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
  
  
&lt;h3 id=&quot;userRoles&quot;&gt;What kinds of user roles does RSSBus AppServer provide?&lt;/h3&gt;

&lt;p&gt;
  RSSBus AppServer offers three levels of user roles: regular, administrator, and root. Regular users can execute app 
  and app services, provided they are authorized to do so. 
&lt;/p&gt;

&lt;p&gt;
  Administrators possess the ability to modify both app and user settings. Administrators can authorize users to run 
  apps and individual app services. Adminstrators may also create and delete users, and grant or revoke administrator 
  access to other users (and themselves).
&lt;/p&gt;

&lt;p&gt;
  There is only one root user, the &lt;b&gt;admin&lt;/b&gt;. The root user behaves and functions exactly like administrative users, 
  with a two exceptions. First, the root user cannot be deleted. Second, the password for the root user is set during 
  the installation process for AS2 Connector.
&lt;/p&gt;

&lt;!--  --&gt;

&lt;h3 id=&quot;whatAreServices&quot;&gt;What are services?&lt;/h3&gt;

&lt;p&gt;
  Services allow users to perform a greater set of functionality in an app than what is exposed through an app&apos;s user 
  interface. Services execute either through the RSSBus AppServer interface or through HTTP requests. Each service has 
  its own unique URL, plus services may take parameters of various sorts. For more information about services in RSSBus 
  Apps, please see &lt;a href=&quot;/kb/articles/apps-serviceshowto.rst&quot;&gt;this&lt;/a&gt; knowledge base article.
&lt;/p&gt;

&lt;!--  --&gt;

&lt;h3 id=&quot;executeServices&quot;&gt;How can a user execute an app&apos;s service while logged out?&lt;/h3&gt;

&lt;p&gt;
  Regular users can execute an app&apos;s &lt;a href=&quot;#whatAreServices&quot;&gt;services&lt;/a&gt; with &lt;a href=&quot;#authtoken&quot;&gt;authtokens&lt;/a&gt;. 
  An administrator must first authorize a user to access a service. To do so, log in as an administrator, and then 
  navigate to the desired service. Scroll down to the &lt;b&gt;Security&lt;/b&gt; section and select a user from the &lt;b&gt;Add User&lt;/b&gt; 
  drop-down.
&lt;/p&gt;

&lt;p&gt;
  To run the service, add the HTTP header &lt;tt&gt;x-rssbus-authtoken&lt;/tt&gt; with the desired authtoken as part of the HTTP 
  request. Alternatively, you may specify the authtoken as &lt;tt&gt;@authtoken&lt;/tt&gt; as part of HHTP form-post data or a query
  parameter.
&lt;/p&gt;

&lt;p&gt;
  For more information about services in RSSBus Apps, please see &lt;a href=&quot;/kb/articles/apps-serviceshowto.rst&quot;&gt;this&lt;/a&gt; 
  knowledge base article.
&lt;/p&gt;

&lt;!--  --&gt;

&lt;h3 id=&quot;authtoken&quot;&gt;What is an &quot;authtoken&quot;?&lt;/h3&gt;

&lt;p&gt;
  Authtokens are unique identifiers that allow users to execute app &lt;a href=&quot;#whatAreServices&quot;&gt;services&lt;/a&gt;, even while 
  they are logged out. To authorize a user to run services, see this &lt;a href=&quot;#executeServices&quot;&gt;section&lt;/a&gt;.
&lt;/p&gt;

&lt;!--  --&gt;

&lt;h3 id=&quot;appsServicesIndependent&quot;&gt;Do authorizations for an app and its services work independent of each other?&lt;/h3&gt;

&lt;p&gt;
  Yes. If authorized, users may use an app&apos;s front-end interface, without access to any of that app&apos;s services. 
  Conversely, users may execute services of an app without authorization to run an app itself. Controlling which
  services a user may execute allows administrators to create highly granular models of user behavior.
&lt;/p&gt;

&lt;!--  --&gt;

&lt;h3 id=&quot;changeAuthtoken&quot;&gt;How do I change a user&apos;s authtoken?&lt;/h3&gt;

&lt;p&gt;
  In the &lt;b&gt;Manage Users&lt;/b&gt; page of the RSSBus AppServer, click on the user whose authtoken you wish to change. In the 
  modal dialog that appears, click &lt;b&gt;New&lt;/b&gt; button that appears next to the Authtoken field, and save the change.
&lt;/p&gt;

&lt;!--  --&gt;

&lt;h3 id=&quot;runApp&quot;&gt;How do I authorize a user to run an app?&lt;/h3&gt;

&lt;p&gt;
  In the &lt;b&gt;Manage Users&lt;/b&gt; page of the RSSBus AppServer, click on the user whose access you wish to authorize. In the 
  modal dialog that appears, click checkbox that appears next to the app you wish to grant access to, and save the 
  change.
&lt;/p&gt;

&lt;!--  --&gt;

&lt;h3 id=&quot;changeAuthLevel&quot;&gt;How do I grant or revoke administrative access for a user?&lt;/h3&gt;

&lt;p&gt;
  In the &lt;b&gt;Manage Users&lt;/b&gt; page of the RSSBus AppServer, click on the user whose administrative access you wish to 
  modify. In the modal dialog that appears, click the checkbox that appears in the &lt;b&gt;Administrator&lt;/b&gt; field, and save 
  the change.
&lt;/p&gt;

&lt;!--  --&gt;

&lt;h3 id=&quot;userModifyAppSettings&quot;&gt;What kinds of users can modify an app&apos;s settings?&lt;/h3&gt;

&lt;p&gt;
  Only administrators can modify an app&apos;s settings.
&lt;/p&gt;

&lt;!--  --&gt;

&lt;h3 id=&quot;needPassword&quot;&gt;Do users need passwords?&lt;/h3&gt;

&lt;p&gt;
  For security purposes, all users are required to have passwords.
&lt;/p&gt;

&lt;!--  --&gt;

&lt;h3 id=&quot;changeProfile&quot;&gt;What information can a user change on his or her own profile?&lt;/h3&gt;

&lt;p&gt;
  Regular users may only change their password. Administrators may additionally alter email and authtoken values, grant 
  administrative access, and grant access to apps and app services.
&lt;/p&gt;

&lt;!--  --&gt;

&lt;h3 id=&quot;renameUser&quot;&gt;Are users renamable?&lt;/h3&gt;

&lt;p&gt;
  User names are permanent and not renamable.
&lt;/p&gt;
  </description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/apps-user-mgmt.rst</guid>
<link>http://www.rssbus.com/kb/articles/apps-user-mgmt.rst</link>
<pubDate>Mon, 28 Nov 2011 00:00:00 GMT</pubDate>
<title>RSSBus AppServer: User Management FAQ</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>The Object-relational mapping (ORM) techniques make it easier to work with relational data sources. In this article we describe the ORM approach for working with Salesforce entities using the Hibernate framework.</x:description>
<x:keywords>SalesForce, JDBC Driver, Object-ralational mapping (ORM), Hiberante, iBATIS, jdbc</x:keywords>
<description>

&lt;p&gt;Object-relational mapping (ORM) technique can bridge your logical business model with your physical storage model. &lt;i&gt;Hibernate&lt;/i&gt; is a popular object-relational
mapping library for Java, providing a framework for mapping object-oriented domain models to a traditional relational database.
&lt;p&gt;
&lt;i&gt;Note: Plese see the article &lt;a href=&quot;http://www.rssbus.com/kb/articles/ado-linqtoef.rst&quot;&gt;Using LINQ with QuickBooks&lt;/a&gt; to see the ORM approach using Microsoft .NET.&lt;/i&gt;
&lt;p&gt;
The &lt;i&gt;RSSBus Salesforce JDBC Driver&lt;/i&gt; supports full integration with Hibernate.In this tutorial, we will generate an object-relational mapping of your Salesforce
repository using the RSSBus JDBC Driver for Salesforce with Hibernate. A similar approach is applicable to all our JDBC Drivers.&lt;/p&gt;


&lt;p&gt;Though Eclipse is the IDE of choice for this article, RSSBus drivers work in any
product that supports the Java Runtime Environment. If you prefer NetBeans as
your IDE, see our article &lt;a href=&quot;http://www.rssbus.com/kb/articles/jdbc-netbeans.rst&quot;&gt;here&lt;/a&gt;. If you prefer
IntelliJ IDEA, see &lt;a href=&quot;http://www.rssbus.com/kb/articles/jdbc-intellij.rst&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;b&gt;STEP 1:	Download the Prerequisite Software&lt;/b&gt;&lt;br&gt;
You will need three pieces of software to follow this tutorial: Eclipse, the RSSBus Salesforce Driver, and Hibernate. Here are their corresponding download links:
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.rssbus.com/download&quot;&gt;RSSBus Salesforce Driver&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.eclipse.org&quot;&gt;Eclipse&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://sourceforge.net/projects/hibernate/files/hibernate4/4.1.2.Final/&quot;&gt;Hibernate&lt;/a&gt; (4.1.2)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;i&gt;Note: These instructions are intended to work specifically with Hibernate version 4.1.2. Our Salesforce driver works with other versions, but these instructions may vary release to release.&lt;/i&gt;&lt;/p&gt;

&lt;b&gt;STEP 2:	 Install the Hibernate Plug-In for Eclipse&lt;/b&gt;
&lt;ul&gt;
  &lt;li&gt;In Eclipse, navigate to Help -&gt; Install New Software.&lt;/li&gt;
  &lt;li&gt;Click the Add button, enter &quot;Hibernate&quot; in the Name field, and enter &quot;http://download.jboss.org/jbosstools/updates/stable/&quot; in the Location field. Click OK.&lt;/li&gt;
  &lt;li&gt;After all the content loads, expand the All JBoss Tools 3.2.x option, choose Hibernate Tools, and click Next.&lt;/li&gt;
&lt;/ul&gt;

&lt;img src=&apos;jdbc-hibernate-1.png&apos; /&gt;
&lt;p&gt;

&lt;b&gt;STEP 3:	Start A New Project&lt;/b&gt;
&lt;ul&gt;
  &lt;li&gt;Go to the File menu and create new project. Select Java Project as your project type and click Next. Enter a project name and click Finish. &lt;/li&gt;
  &lt;li&gt;Right-click on your project and select Properties. Select Java Build Path and then select the Libraries tab. &lt;/li&gt;
  &lt;li&gt;Using the Add External JARs... command, you need to add several libraries to your project.&lt;/li&gt;
    &lt;OL TYPE=&quot;1&quot;&gt;
      &lt;li&gt;From your RSSBus Salesforce download, the rssbus.salesforce.jar library.&lt;/li&gt;
      &lt;li&gt;From your Hibernate download, all of the .jar files in the /dist/lib/required and /dist/lib/provided directories.&lt;/li&gt;
    &lt;/OL&gt;
&lt;/ul&gt;

&lt;b&gt;STEP 4:	Add a Hibernate Configuration File&lt;/b&gt;
&lt;ul&gt;
  &lt;li&gt;Right-click on our new project and select New -&gt; Other -&gt; Hibernate.&lt;/li&gt;
  &lt;li&gt;Select Hibernate Configuration File (cfg.xml) and hit Next.&lt;/li&gt;
  &lt;li&gt;Select src as the parent folder and click Next.&lt;/li&gt;
  &lt;li&gt;Input the following values for each text field:&lt;/li&gt;
    &lt;OL TYPE=&quot;1&quot;&gt;
    &lt;li&gt;&lt;b&gt;Database dialect:&lt;/b&gt; SQL Server&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;Driver class:&lt;/b&gt; RSSBus.SalesForce.SalesForceDriver&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;Connection URL:&lt;/b&gt; jdbc:salesforce:User=Your User name; Password=Your password; Access Token=Your Access Token &lt;/li&gt;
    &lt;/OL&gt;
&lt;/ul&gt;

&lt;b&gt;STEP 5:	Connecting Hibernate to Salesforce&lt;/b&gt;
We must now connect our Hibernate instance to Salesforce.
&lt;ul&gt;
  &lt;li&gt;Switch to the Hibernate Configurations perspective: Window -&gt; Open Perspective -&gt; Hibernate.&lt;/li&gt;
  &lt;li&gt;Right-click on the Hibernate Configurations panel and select Add Configuration...&lt;/li&gt;
  &lt;li&gt;Click the Browse... button and choose the project we&apos;re working with.&lt;/li&gt;
  &lt;li&gt;For the Configuration file field, click Setup, click Use Existing..., and select the location of the hibernate.cfg.xml file (inside src folder in this demo).&lt;/li&gt;
  &lt;li&gt;Click OK to dismiss the Edit Configuration dialog&lt;/li&gt;
  &lt;li&gt;Expand the Database node of our new created Hibernate Configurations file. If you can see the tables of the database, it means the connection is successfully established.&lt;/li&gt;
&lt;/ul&gt;

&lt;img src=&apos;jdbc-hibernate-3.png&apos; /&gt;
&lt;p&gt;

&lt;b&gt;STEP 6:	Reverse Engineer Salesforce&lt;/b&gt;
&lt;ul&gt;
  &lt;li&gt;Switch back to the Package Explorer.&lt;/li&gt;
  &lt;li&gt;Right-click on our project, select New -&gt; Other, and select Hibernate -&gt; Hibernate Reverse Engineering File (reveng.xml). Click Next.&lt;/li&gt;
  &lt;li&gt;Select src as the parent folder and click Next.&lt;/li&gt;
  &lt;li&gt;In the Console configuration dropdown menu, select the Hibernate configuration file we created in the previous step and click Refresh. Please note that it may take a few minutes to load all the meta data of more than a hundred tables in Salesforce. Alternatively, you can use the cache of metadata. See how to do that at &lt;a href=&quot;http://www.rssbus.com/kb/help/RFR3-V/pg_cachingMetadata.rst&quot;&gt;here&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Expand the node and choose the tables you want to reverse engineer. Click Finish when you are done.&lt;/li&gt;
&lt;/ul&gt;

&lt;img src=&apos;jdbc-hibernate-5.png&apos; /&gt;


&lt;b&gt;STEP 7:	Configure Hibernate to Run&lt;/b&gt;
&lt;ul&gt;
  &lt;li&gt;From the menu bar, select Run -&gt; Hibernate Code Generation -&gt; Hibernate Code Generation Configurations.&lt;/li&gt;
  &lt;li&gt;In the Console configuration dropdown menu, select our Hibernate configuration file we created in Step 5. Click Browse... by Output directory and select src. Use existing reveng.xml from src.&lt;/li&gt;
  &lt;li&gt;Enable the Reverse engineer from JDBC Connection checkbox. Click the Setup button, click Use Existing..., and select the location of the hibernate.cfg.xml file (inside src folder in this demo).&lt;/li&gt;
  &lt;li&gt;In the Exporters tab, check Domain code (.java) and Hibernate XML Mappings (hbm.xml).&lt;/li&gt;
  &lt;li&gt;Click Run.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One or more plain old Java objects (POJO) are created based on the reverse engineering setting in the previous step.&lt;/p&gt;


&lt;b&gt;STEP 8:	Insert Mapping Tags&lt;/b&gt;
For each mapping we have generated, we will need to create a mapping tag in hibernate.cfg.xml to point Hibernate to our mapping resource.
 Open hibernate.cfg.xml and insert the mapping tags like below the comment as so:
 
 &lt;code lang=&quot;xml&quot;&gt;&lt;pre&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;
&amp;lt;!DOCTYPE hibernate-configuration PUBLIC &amp;quot;-//Hibernate/Hibernate Configuration DTD 3.0//EN&amp;quot; &amp;quot;http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd&amp;quot;&amp;gt;

&amp;lt;hibernate-configuration&amp;gt;
  &amp;lt;session-factory name=&amp;quot;&amp;quot;&amp;gt;
    &amp;lt;property name=&amp;quot;hibernate.connection.driver_class&amp;quot;&amp;gt;
      RSSBus.SalesForce.SalesForceDriver
    &amp;lt;/property&amp;gt;
    &amp;lt;property name=&amp;quot;hibernate.connection.url&amp;quot;&amp;gt;
      jdbc:salesforce:User=Your User Name; Password=Your password; Access Token= Your Access Token;
    &amp;lt;/property&amp;gt;
    &amp;lt;property name=&amp;quot;hibernate.dialect&amp;quot;&amp;gt;
      org.hibernate.dialect.SQLServerDialect
    &amp;lt;/property&amp;gt;
    &amp;lt;!--Add the XML Mapping tags here--&amp;gt;
    &amp;lt;mapping resource=&amp;quot;Account.hbm.xml&amp;quot; /&amp;gt; 
    &amp;lt;/session-factory&amp;gt;
&amp;lt;/hibernate-configuration&amp;gt;&lt;/pre&gt;&lt;/code&gt;
 
 &lt;b&gt;STEP 9:	Et Voila!&lt;/b&gt;
 Now the setup of Hibernate is done. Using the entity you created from last step, you can now perform Select, Update, Delete, and Insert commands. For example:
 
 &lt;code lang=&quot;java&quot;&gt;&lt;pre&gt;import java.util.*;
import org.hibernate.*;
import org.hibernate.cfg.Configuration;

public class App {
	public static void main(final String[] args) {
    Session session =  new
    Configuration().configure().buildSessionFactory().openSession();
        String SELECT = &amp;quot;FROM Account&amp;quot;;
        Query q = session.createQuery(SELECT);
        List&amp;lt;Account&amp;gt; resultList = (List&amp;lt;Account&amp;gt;) q.list();

        for(Account s: resultList){
          System.out.println(s.getAccountNumber());
          System.out.println(s.getName());
        }
	}
}&lt;/pre&gt;&lt;/code&gt;

&lt;a href=&quot;http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=7579956&quot; rel=&quot;tag&quot; class=hidden&gt;CodeProject&lt;/a&gt;  


</description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/jdbc-hibernate.rst</guid>
<link>http://www.rssbus.com/kb/articles/jdbc-hibernate.rst</link>
<pubDate>Wed, 25 Apr 2012 00:00:00 GMT</pubDate>
<title>Using Object-relational mapping (ORM) with Salesforce Entities</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>RSSBus JDBC Drivers make it easy for Java developers to work with a variety of data sources. In this article we show how to develop with RSSBus JDBC Drivers using the IntelliJ Java IDE.</x:description>
<x:keywords>SalesForce, JDBC Driver, Integrated Development Environment (IDE), IntelliJ IDEA, jdbc</x:keywords>
<description>

&lt;p&gt;In this article, we will demonstrate how to integrate RSSBus JDBC Driver for Salesforce with IntelliJ. The same approach is applicable to all our JDBC drivers.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;b&gt;STEP 1: &lt;/b&gt;In the Data Sources window, right click and select &quot;Add Data Source -&gt; DB Data Source&quot;. &lt;/li&gt;&lt;p&gt;
  &lt;li&gt;&lt;b&gt;STEP 2: &lt;/b&gt;In the Data Source Properties dialog add the JDBC Driver file &quot;rssbus.salesforce.jar&quot;. It is in the lib directory of our product. Select &quot;RSSBus.SalesForce.SalesForceDriver&quot; as the JDBC Driver Class from the drop-down list.&lt;p&gt;
&lt;p&gt;
  The JDBC URL allows you to specify the connection URL. The connection URL is as below: &lt;p&gt;
  jdbc:salesforce:AccessToken=YourAccessToken&lt;p&gt;
  The URL must start with &quot;jdbc:salesforce:...&quot;, and can include any of the connection properties separated with a semi-colon. Click &quot;Finish&quot;.  See connection string options &lt;a href=&quot;http://www.rssbus.com/kb/help/RFR3-V/RSBSalesForce.rst&quot;&gt;here&lt;/a&gt;&lt;p&gt;
  Configure the user name, password and Click &quot;OK&quot; to finish.&lt;p&gt;
  &lt;img src=&apos;jdbc-intellij-1.png&apos; /&gt;
  &lt;li&gt;&lt;b&gt;STEP 3: &lt;/b&gt;: Right click the data source we just created, and select &quot;Refresh Tables&quot;.  After the connection is established, you can expand it to see the meta-data which will include Tables, Views and Procedures.&lt;/li&gt;&lt;p&gt;&lt;p&gt;
  The Tables are similar to database tables and support two-way data communication. The Views are similar to traditional database views and are read-only. And the Procedures are similar to database stored procedures; they allow you to manipulate the data source in ways that is not possible with Tables or Views.&lt;p&gt;
  Data can be queried for tables and views by right clicking on any of them and selecting &quot;Open Tables Editor&quot;. You can also insert, update or delete records from the data view window.&lt;p&gt;
  &lt;img src=&apos;jdbc-intellij-2.png&apos; /&gt;
&lt;/ul&gt;
</description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/jdbc-intellij.rst</guid>
<link>http://www.rssbus.com/kb/articles/jdbc-intellij.rst</link>
<pubDate>Wed, 25 Apr 2012 00:00:00 GMT</pubDate>
<title>Using RSSBus JDBC Drivers from IntelliJ IDEA </title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>RSSBus JDBC Drivers make it easy for Java developers to work with a variety of data sources. In this article we show how to develop with RSSBus JDBC Drivers using the NetBeans Java IDE.</x:description>
<x:keywords>SalesForce, JDBC Driver, Integrated Development Environment (IDE), NetBeans, jdbc</x:keywords>
<description>

&lt;p&gt;In this article, we will show how to use the RSSBus JDBC Driver for Salesforce with NetBeans. The same approach is applicable to all our JDBC drivers.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;b&gt;STEP 1: &lt;/b&gt;Expand the Database node in the Service window, and right click on the Drivers node, select New Driver.&lt;/li&gt;&lt;p&gt;
  &lt;li&gt;&lt;b&gt;STEP 2: &lt;/b&gt;In the New JDBC Driver wizard, add the rssbus.salesforce.jar file by clicking on the &quot;Add&quot; button.  It&apos;s inside the lib directory of our product. After adding the driver file, click &quot;Find&quot; button to search the driver class inside the jar. Select &quot;RSSBus.SalesForce.SalesForceDriver&quot; from the drop-down list. 
Enter the name for this driver in the Name text field.  Click &quot;OK&quot;.
&lt;img src=&apos;jdbc-netbeans-1.png&apos; /&gt;

  &lt;li&gt;&lt;b&gt;STEP 3: &lt;/b&gt;Right click the database node and select &quot;New Connection&quot;. In the New Connection Wizard, choose the driver we just added from the drop-down list, click &quot;Next&quot;.
  Enter your user name and password.  The JDBC URL allows you to specify the connection URL. The connection URL is as below: &lt;/li&gt;&lt;p&gt;
  jdbc:salesforce:AccessToken=YourAccessToken&lt;p&gt;
  The URL must start with &quot;jdbc:salesforce:...&quot;, and can include any of the connection properties separated with a semi-colon. Click &quot;Finish&quot;.  See connection string options &lt;a href=&quot;http://www.rssbus.com/kb/help/RFR3-V/RSBSalesForce.rst&quot;&gt;here&lt;/a&gt;&lt;p&gt;
  &lt;img src=&apos;jdbc-netbeans-2.png&apos; /&gt;
  &lt;li&gt;&lt;b&gt;STEP 4: &lt;/b&gt;Right-click the connection we just created, select &quot;Connect&quot;.  After the connection is established, you can expand it to see the meta-data which will include Tables, Views and Procedures.&lt;/li&gt;&lt;p&gt;
  The Tables are similar to database tables and support two-way data communication. The Views are similar to traditional database views and are read-only. And the Procedures are similar to database stored procedures; they allow you to manipulate the data source in ways that is not possible with Tables or Views.&lt;p&gt;
  Data can be queried for tables and views by right clicking on any of them and selecting &quot;View Data&quot;. You can also insert, update or delete records in the data view window.&lt;p&gt;
  &lt;img src=&apos;jdbc-netbeans-3.png&apos; /&gt;
&lt;/ul&gt;

&lt;i&gt;Note: There is a bug in some versions of NetBeans that leads to a null pointer exception when using a JDBC Driver with JDK 1.7. If you encounter this exception you can still use the JDBC driver in you code only integration with NetBeans is broken.&lt;/i&gt;
</description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/jdbc-netbeans.rst</guid>
<link>http://www.rssbus.com/kb/articles/jdbc-netbeans.rst</link>
<pubDate>Wed, 25 Apr 2012 00:00:00 GMT</pubDate>
<title>Using RSSBus JDBC Drivers from NetBeans</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>This web part will list each user group and its members, as defined in your Active Directory (or other LDAP server) installation.</x:description>
<x:keywords>Webpart, SharePoint, LDAP, Active Directory</x:keywords>
<description>
	&lt;p&gt;
		This web part will list each user group and its members, as defined in your Active Directory (or 
		other LDAP server) installation.
	&lt;/p&gt;
	
	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 1:&lt;/b&gt; Ensure the RSSBus Web Part is installed. &lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 2:&lt;/b&gt; Install the LDAP Connector. Add the RSSBus Web Part to your page and paste the following template into its source editor, but do not click &#65533;Apply&#65533; yet.&lt;/li&gt;
	&lt;/ul&gt;
	
&lt;code lang=xml&gt;&lt;pre&gt;&amp;lt;rsb:import lib=&amp;quot;RSSBus.LdapOps&amp;quot; /&amp;gt;
&amp;lt;rsb:info&amp;gt;
  &amp;lt;input name=&amp;quot;showemptygroups&amp;quot; values=&amp;quot;false,true&amp;quot; /&amp;gt;
&amp;lt;/rsb:info&amp;gt;

&amp;lt;!-- general ldap connection properties --&amp;gt;
&amp;lt;rsb:set attr=&amp;quot;server&amp;quot; value=&amp;quot;testman&amp;quot;/&amp;gt;
&amp;lt;rsb:set attr=&amp;quot;authdn&amp;quot; value=&amp;quot;NS2\\Lance&amp;quot;/&amp;gt;
&amp;lt;rsb:set attr=&amp;quot;password&amp;quot; value=&amp;quot;*****&amp;quot;/&amp;gt;

&amp;lt;!-- group search settings --&amp;gt;
&amp;lt;rsb:set attr=&amp;quot;dn&amp;quot; value=&amp;quot;dc=NS2&amp;quot;/&amp;gt;
&amp;lt;rsb:set attr=&amp;quot;filter&amp;quot; value=&amp;quot;objectClass=group&amp;quot;/&amp;gt;
&amp;lt;rsb:set attr=&amp;quot;scope&amp;quot; value=&amp;quot;WHOLESUBTREE&amp;quot;/&amp;gt;

&amp;lt;!-- group search --&amp;gt;
&amp;lt;rsb:call op=&amp;quot;ldapSearch&amp;quot; save=&amp;quot;groups&amp;quot; /&amp;gt;
&amp;lt;rsb:call op=&amp;quot;feedGet?feed=[_feeds.groups | urlencode]&amp;quot;&amp;gt;
  &amp;lt;rsb:set attr=&amp;quot;showgroup&amp;quot; value=&amp;quot;true&amp;quot; /&amp;gt;
  &amp;lt;rsb:equals attr=&amp;quot;showemptygroups&amp;quot; value=&amp;quot;false&amp;quot;&amp;gt;
    &amp;lt;rsb:set attr=&amp;quot;showgroup&amp;quot; value=&amp;quot;[ldap:member# | def(&amp;#39;0&amp;#39;) | equals(&amp;#39;0&amp;#39;, &amp;#39;false&amp;#39;, &amp;#39;true&amp;#39;)]&amp;quot; /&amp;gt;
  &amp;lt;/rsb:equals&amp;gt;
  &amp;lt;rsb:equals attr=&amp;quot;showgroup&amp;quot; value=&amp;quot;true&amp;quot;&amp;gt;
   &amp;lt;a href=&amp;quot;javascript:;&amp;quot; onmousedown=&amp;quot;toggleDiv(&amp;#39;[ldap:name]-content&amp;#39;);&amp;quot;&amp;gt;[ldap:name]&amp;lt;/a&amp;gt; ([ldap:member# | def(&amp;#39;0&amp;#39;)])
   &amp;lt;div id=&amp;quot;[ldap:name]-content&amp;quot; style=&amp;quot;display:none&amp;quot;&amp;gt;
     &amp;lt;rsb:set attr=&amp;quot;dn&amp;quot; value=&amp;quot;[ldap:dn]&amp;quot;/&amp;gt;
     &amp;lt;rsb:set attr=&amp;quot;scope&amp;quot; value=&amp;quot;BASEOBJECT&amp;quot;/&amp;gt;
     &amp;lt;rsb:call op=&amp;quot;ldapSearch&amp;quot; output=&amp;quot;out&amp;quot;&amp;gt;
       &amp;lt;table width=&amp;quot;100%&amp;quot;&amp;gt;
         &amp;lt;tr style=&amp;quot;background-color:LightGrey&amp;quot;&amp;gt;&amp;lt;td&amp;gt;samAccountName:&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[ldap:samaccountname]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
         &amp;lt;tr style=&amp;quot;background-color:LightGrey&amp;quot;&amp;gt;&amp;lt;td&amp;gt;Full Group DN:&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[ldap:dn]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
         &amp;lt;tr&amp;gt;&amp;lt;/tr&amp;gt;       
         &amp;lt;rsb:enum attr=&amp;quot;ldap:member&amp;quot;&amp;gt;
           &amp;lt;tr&amp;gt;&amp;lt;td colspan=&amp;quot;2&amp;quot;&amp;gt;[_value]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
        &amp;lt;/rsb:enum&amp;gt;
       &amp;lt;/table&amp;gt;
     &amp;lt;/rsb:call&amp;gt;
   &amp;lt;/div&amp;gt;
   &amp;lt;hr /&amp;gt;
 &amp;lt;/rsb:equals&amp;gt;
&amp;lt;/rsb:call&amp;gt;

&amp;lt;script&amp;gt; function toggleDiv(div) {
  var mydiv=document.getElementById(div);
  if(mydiv.style.display == &amp;#39;none&amp;#39;) { 
    mydiv.style.display = &amp;#39;block&amp;#39;; 
  }
  else { 
    mydiv.style.display = &amp;#39;none&amp;#39;;
  }
}
&amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;/code&gt;
	
	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 3:&lt;/b&gt; Modify this template so that it works for your Active Directory server. 
			There are several item to change:
			&lt;ol&gt;
				&lt;li&gt;On line 8-10 change the values of the server, authentication DN, and authentication password settings to 
				match your AD installation.  See the advanced tip at the bottom of this post to automatically use the logged 
				in user as the authentication DN. &lt;/li&gt;  
				&lt;li&gt;On line 13 modify the value of the DN setting to match your domain.&lt;/li&gt;
			&lt;/ol&gt;
			&lt;p&gt;You can customize the HTML in the template or leave it as is.&lt;/p&gt;
		&lt;/li&gt;
		
		&lt;li&gt;&lt;b&gt;Step 4:&lt;/b&gt; Click &quot;Apply&quot;. When the page reloads, you will be presented with a list of the groups on your Active 
			Directory domain.  Click on a group to expand it into its list of user members.
		&lt;/li&gt;		
	&lt;/ul&gt;

&lt;p&gt;
	&lt;b&gt;&lt;i&gt;Advanced Tip&lt;/i&gt;&lt;/b&gt;: Use RSSBus&#65533; special _spuser item in order to get information specific to the currently authenticated SharePoint user.  
	This is useful for listing documents modified by a specific user, authenticating to an Exchange 
	server, and (in this example) for authenticating to AD.  You can set the DN to &quot;[_spuser.LoginName]&quot;, and prompt the user 
	to enter their own password.
&lt;/p&gt;</description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/webpart-activedirectory.rst</guid>
<link>http://www.rssbus.com/kb/articles/webpart-activedirectory.rst</link>
<pubDate>Wed, 13 Jan 2010 00:00:00 GMT</pubDate>
<title>List Active Directory Groups and Users in SharePoint</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>Perform custom SQL queries easily customize the resulting  display directly from SharePoint.</x:description>
<x:keywords>Webpart, SharePoint, SQL </x:keywords>
<description>
	&lt;p&gt;
		This Web Part will perform a custom SQL query with a custom display. 
		Unlike previous examples, this will require you to provide your
        SQL connection string and query and make replacements inside the template itself to make it 
		match the results of the query.
	&lt;/p&gt;
	
	&lt;img src=&apos;webpart-customsql-1.gif&apos; /&gt;
	
	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 1:&lt;/b&gt; Ensure the RSSBus Web Part is installed.&lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 2:&lt;/b&gt; Make sure you have a valid SQL connection string and query.  If you are using another type of 
			database,  that will work as well &#65533; there are many different database connectors in the RSSBus Connector library.
		&lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 3:&lt;/b&gt; Add the RSSBus Web Part to your page and paste the following template into its source editor, but do not click &quot;Apply&quot; yet.
&lt;br&gt;
&lt;code lang=&quot;psh; html-script: true;&quot;&gt;&lt;pre&gt;&amp;lt;rsb:info&amp;gt;
   &amp;lt;input name=&amp;quot;conn&amp;quot; default=&amp;quot;server=***;database=***;User ID=***;Password=***&amp;quot; /&amp;gt;
   &amp;lt;input name=&amp;quot;query&amp;quot; default=&amp;quot;SELECT TOP 20 * YourTable ORDER BY YourDateColumn&amp;quot; /&amp;gt;
&amp;lt;/rsb:info&amp;gt;

&amp;lt;rsb:import lib=&amp;quot;RSSBus.SqlOps&amp;quot;/&amp;gt;

&amp;lt;table width=&amp;quot;100%&amp;quot;&amp;gt;
  &amp;lt;tr&amp;gt; 
    &amp;lt;th style=&amp;quot;background-color:LightGrey; white-space:nowrap&amp;quot;&amp;gt;Name&amp;lt;/th&amp;gt; 
    &amp;lt;th style=&amp;quot;background-color:LightGrey; white-space:nowrap&amp;quot;&amp;gt;Company&amp;lt;/th&amp;gt; 
    &amp;lt;th style=&amp;quot;background-color:LightGrey; white-space:nowrap&amp;quot;&amp;gt;Product&amp;lt;/th&amp;gt; 
    &amp;lt;th style=&amp;quot;background-color:LightGrey; white-space:nowrap&amp;quot;&amp;gt;Date/Time&amp;lt;/th&amp;gt; 
  &amp;lt;/tr&amp;gt; 
  &amp;lt;rsb:call op=&amp;quot;sqlQuery&amp;quot;&amp;gt;  
    &amp;lt;tr&amp;gt; 
      &amp;lt;td&amp;gt;&amp;lt;a href=&amp;quot;mailto:[sql:customeremail]&amp;quot;&amp;gt;[sql:customername]&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;  
      &amp;lt;td&amp;gt;[sql:company]&amp;lt;/td&amp;gt; 
      &amp;lt;td&amp;gt;[sql:productcode]&amp;lt;/td&amp;gt; 
      &amp;lt;td&amp;gt;[sql:time]&amp;lt;/td&amp;gt; 
    &amp;lt;/tr&amp;gt; 
  &amp;lt;/rsb:call&amp;gt;
&amp;lt;/table&amp;gt;&lt;/pre&gt;&lt;/code&gt;
		&lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 4:&lt;/b&gt; Modify this template so that it works for your SQL server.  
			There are a few things to change:

			&lt;ol&gt;
				&lt;li&gt;On line 2 and 3, conn and query.  Provide the connection string and query 
				for your SQL query. 
				&lt;li&gt;On lines 10&#65533;13, modify the column header names to match the values coming back from 
				your query.  You can add others as well. 
				&lt;li&gt;On lines 18-21, change the outputs to match the outputs coming out of your query &#65533; these will match the 
				column names.  In this example the name, company, part, and time column values have been outputted for each query result.
			&lt;/ol&gt;
		&lt;/li&gt;
	&lt;/ul&gt;		
		&lt;p&gt;
			As always, you can customize the HTML in the template or leave it as is.
		&lt;/p&gt;
		
		&lt;p&gt;
			&lt;b&gt;&lt;i&gt;Advanced Tip&lt;i&gt;&lt;/b&gt;: 
			Did you know that the RSSBus Web Part has YUI formatting capabilities built-in? Try the example below to format the output of the rsb:call as a YUI Table (modify the YUI script to match your own connection string, query, and column names).
		&lt;/p&gt;
&lt;code&gt;&lt;pre&gt;&amp;lt;rsb:info&amp;gt; 
  &amp;lt;input name=&amp;quot;conn&amp;quot; default=&amp;quot;server=***;database=***;User ID=***;Password=***&amp;quot; /&amp;gt; 
  &amp;lt;input name=&amp;quot;query&amp;quot; default=&amp;quot;SELECT TOP 20 * FROM YourTable ORDER BY YourDateColumn DESC&amp;quot; /&amp;gt; 
&amp;lt;/rsb:info&amp;gt; 

&amp;lt;rsb:import lib=&amp;quot;RSSBus.SqlOps&amp;quot;/&amp;gt;

&amp;lt;rsb:set attr=&amp;#39;_meta.YUIDataColDefs&amp;#39; value=&amp;#39;DataDefsDown&amp;#39;/&amp;gt; 
&amp;lt;rsb:set attr=&amp;#39;_meta.YUIDataFields&amp;#39; value=&amp;#39;DataFieldsDown&amp;#39;/&amp;gt; 
&amp;lt;rsb:call op=&amp;quot;sqlQuery&amp;quot; format=ToYuiTable/&amp;gt;  

&amp;lt;script&amp;gt; var DataDefsDown = [
  {key:&amp;quot;sql:customername&amp;quot;,label:&amp;quot;Name&amp;quot;,sortable:false,resizeable:true},
  {key:&amp;quot;sql:productcode&amp;quot;,label:&amp;quot;Part#&amp;quot;,sortable:false,resizeable:true},
  {key:&amp;quot;sql:time&amp;quot;,label:&amp;quot;Date&amp;quot;,sortable:false,resizeable:true},
  {key:&amp;quot;sql:company&amp;quot;,label:&amp;quot;Company&amp;quot;,sortable:false,resizeable:true},
  {key:&amp;quot;sql:title&amp;quot;,label:&amp;quot;JobTitle&amp;quot;,sortable:false,resizeable:true}
];
 
var DataFieldsDown = [
  {key:&amp;quot;sql:customername&amp;quot;},
  {key:&amp;quot;sql:productcode&amp;quot;},
  {key:&amp;quot;sql:time&amp;quot;},
  {key:&amp;quot;sql:company&amp;quot;},
  {key:&amp;quot;sql:title&amp;quot;}
];
&amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;/code&gt;</description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/webpart-customsql.rst</guid>
<link>http://www.rssbus.com/kb/articles/webpart-customsql.rst</link>
<pubDate>Wed, 13 Jan 2010 00:00:00 GMT</pubDate>
<title>Quickly Integrate Custom SQL Queries With SharePoint</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>Integrating SharePoint with Microsoft Dynamics CRM does not have to be complicated. This articles shows you how you can add an elegant grid of CRM contacts into SharePoint with only ten lines of configuration.</x:description>
<x:keywords>Webpart, SharePoint, Dynamics CRM</x:keywords>
<description>
	&lt;p&gt;
		In the past integrating Microsoft CRM with SharePoint required a large investment of time and money, often 
		resulting in unnecessary rigidness and complexity. This particular example alleviates that complexity using Microsoft 
		CRM Services (although its use is not a requirement).
	&lt;/p&gt;
	
	&lt;img src=&apos;webpart-dynamiccrm-1.png&apos; /&gt;
	
	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 1:&lt;/b&gt; Install RSSBus for SharePoint if it is not already installed on your server.  See here for instructions.&lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 2:&lt;/b&gt; Ensure the MscrmOps Connector is installed. Retrieve the service URL for the installation of 
			Microsoft Dynamics CRM (e.g, https://crmserver:5555/mscrmservices/2006/crmservice.asmx) as well as a user name and password 
			needed for accessing the service; CRM uses integrated authentication by default, so this will normally be your domain
			account and password.
		&lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 3:&lt;/b&gt; Add the RSSBus Web Part to your page and paste the following template into its source editor. Next, edit the 
			service URL, user name, and password settings to correspond to your own MS CRM instance. Finally, click &#65533;Apply&#65533;.  You will
			see the Web Part rendered with a list of contacts from Microsoft CRM.
		&lt;/li&gt;
	&lt;/ul&gt;
	
&lt;code lang=xml&gt;&lt;pre&gt;&amp;lt;rsb:import lib=&amp;quot;RSSBus.MscrmOps&amp;quot;/&amp;gt;
&amp;lt;rsb:set attr=&amp;quot;serviceurl&amp;quot; value=&amp;quot;http://10.0.1.197:5555/mscrmservices/2006/crmservice.asmx&amp;quot;/&amp;gt;  
&amp;lt;rsb:set attr=&amp;quot;username&amp;quot; value=&amp;quot;YOURUSERNAME&amp;quot;/&amp;gt;  
&amp;lt;rsb:set attr=&amp;quot;password&amp;quot; value=&amp;quot;YOURPASSWORD&amp;quot;/&amp;gt;  
&amp;lt;rsb:set attr=&amp;quot;maxresults&amp;quot; value=&amp;quot;300&amp;quot; /&amp;gt;
&amp;lt;rsb:set attr=&amp;quot;_meta.YUITableAttrs&amp;quot; value=&amp;quot;mscrm:fullname, mscrm:telephone1, mscrm:address1_city&amp;quot;/&amp;gt;
&amp;lt;rsb:set attr=&amp;quot;_meta.YUITableLabels&amp;quot; value=&amp;quot;Full Name, Phone #, Country&amp;quot;/&amp;gt;  
&amp;lt;rsb:call op=&amp;quot;mscrmContact&amp;quot; format=&amp;quot;YuiTable&amp;quot; /&amp;gt;&lt;/pre&gt;&lt;/code&gt;
	
	&lt;p&gt;
		This particular template renders a grid using the Yahoo UI Table.  You can do your own 
		HTML rendering by inserting HTML inside the scope of the &amp;lt;rsb:call&amp;gt;. Other CRM entities such as appointments, leads, contracts, etc. can also be listed.
        For example, by modifying a single line of code, the previous template can be changed to list CRM appointments.
        Simply replace op=&#65533;mscrmContact&#65533; with op=&#65533;mscrmAppointment&#65533;. 
        Also, by changing the operation call (the op= part) and the HTML formatting of the data, you can create pie charts of CRM
		invoices, bar charts of orders, etc.
	&lt;/p&gt;
	
	&lt;img src=&apos;webpart-dynamiccrm-2.png&apos; /&gt;</description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/webpart-dynamiccrm.rst</guid>
<link>http://www.rssbus.com/kb/articles/webpart-dynamiccrm.rst</link>
<pubDate>Wed, 13 Jan 2010 00:00:00 GMT</pubDate>
<title>Microsoft Dynamics CRM Integration with SharePoint</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>Quickly bring up a list of email correspondence to and from a particular email address directly from SharePoint pages</x:description>
<x:keywords>Webpart, SharePoint, Email</x:keywords>
<description>
	&lt;p&gt;
		The following template will allow you to quickly pull a list of sent and received emails for a particular address directly from SharePoint pages.
	&lt;/p&gt;
	
	&lt;img src=&apos;webpart-emailsearch-1.png&apos; /&gt;
	
	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 1:&lt;/b&gt; Ensure the RSSBus Web Part is installed.&lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 2:&lt;/b&gt; Install the IAMP Connector.  
        &lt;li&gt;&lt;b&gt;Step 3:&lt;/b&gt; Find the host name and IP address of your IMAP mail serve. Also, make sure you know the user name and password to authenticate the server 
        (This is the same information entered into Outlook when configuring your mail server).
		&lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 4:&lt;/b&gt; Add the RSSBus WebPart to your page by pasting the following template into its source editor. Click &quot;Apply&quot;.
	
&lt;code lang=&quot;psh; html-script: true;&quot;&gt;&lt;pre&gt;&amp;lt;rsb:check attr=&amp;quot;_request.email&amp;quot;&amp;gt;
  &amp;lt;rsb:import lib=&amp;quot;RSSBus.ImapOps&amp;quot; /&amp;gt;
  &amp;lt;div id=&amp;quot;myemails&amp;quot; style=&amp;quot;height:15em;overflow:auto&amp;quot;&amp;gt;

    &amp;lt;!-- set the search criteria to get emails to and from email address over the past x months --&amp;gt;
    &amp;lt;rsb:set attr=&amp;quot;sentsince&amp;quot; value=&amp;quot;[sentsince | date() | dateadd(&amp;#39;Month&amp;#39;, &amp;#39;[months]&amp;#39;) | todate(&amp;#39;dd-MMM-yyyy&amp;#39;) ]&amp;quot; /&amp;gt;
    &amp;lt;!-- this search criteria format is the standard defined in the IMAPv4 RFC --&amp;gt;
    &amp;lt;rsb:set attr=&amp;quot;searchcriteria&amp;quot; value=&amp;quot;SENTSINCE [sentsince] OR FROM [query] TO [query]&amp;quot; /&amp;gt;

    &amp;lt;!-- search for matching emails --&amp;gt;
    &amp;lt;rsb:set attr=&amp;quot;uidmode&amp;quot; value=&amp;quot;TRUE&amp;quot; /&amp;gt;
    &amp;lt;rsb:call op=&amp;quot;imapSearch&amp;quot;&amp;gt;
      &amp;lt;rsb:first&amp;gt;
        &amp;lt;div style=&amp;quot;overflow:auto&amp;quot;&amp;gt;
          &amp;lt;table width=&amp;quot;100%&amp;quot;&amp;gt;
            &amp;lt;tr&amp;gt;
              &amp;lt;th style=&amp;quot;background-color:LightGrey; white-space:nowrap&amp;quot;&amp;gt;From&amp;lt;/th&amp;gt;                              
              &amp;lt;th style=&amp;quot;background-color:LightGrey; white-space:nowrap&amp;quot;&amp;gt;Subject&amp;lt;/th&amp;gt;                        
              &amp;lt;th style=&amp;quot;background-color:LightGrey; white-space:nowrap&amp;quot;&amp;gt;Date&amp;lt;/th&amp;gt;                            
              &amp;lt;th style=&amp;quot;background-color:LightGrey; white-space:nowrap&amp;quot;&amp;gt;Size&amp;lt;/th&amp;gt;                                
            &amp;lt;/tr&amp;gt;        
      &amp;lt;/rsb:first&amp;gt;
      
      &amp;lt;!-- usually, the first part of an email will be plain text --&amp;gt;      
      &amp;lt;rsb:set attr=&amp;quot;part.id&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;

      &amp;lt;!-- for multi-part emails, find the best (text/html) part for display --&amp;gt;
      &amp;lt;rsb:notnull attr=&amp;quot;part:contenttype&amp;quot;&amp;gt;
        &amp;lt;rsb:enum attr=&amp;quot;part:contenttype&amp;quot;&amp;gt;
            &amp;lt;rsb:set attr=&amp;quot;contenttype&amp;quot; value=&amp;quot;part:contenttype#[_index]&amp;quot; /&amp;gt;
            &amp;lt;rsb:equals attr=&amp;quot;contenttype&amp;quot; value=&amp;quot;text/html&amp;quot;&amp;gt;
            &amp;lt;rsb:set attr=&amp;quot;part.id&amp;quot; value=&amp;quot;[_index]&amp;quot; /&amp;gt;
            &amp;lt;/rsb:equals&amp;gt;
        &amp;lt;/rsb:enum&amp;gt;
      &amp;lt;/rsb:notnull&amp;gt;
      
            &amp;lt;tr&amp;gt;
             &amp;lt;td style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;[imap:fromname]&amp;lt;/td&amp;gt;
             &amp;lt;td style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;
               &amp;lt;a href=&amp;quot;?msgnumber=[imap:id]&amp;amp;partid=[part.id]&amp;amp;email=[query]&amp;quot;&amp;gt;[imap:subject | truncate(&amp;#39;55&amp;#39;)]&amp;lt;/a&amp;gt;
             &amp;lt;/td&amp;gt;
             &amp;lt;td style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;[imap:date]&amp;lt;/td&amp;gt;  
             &amp;lt;td style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;[imap:size]&amp;lt;/td&amp;gt;
           &amp;lt;/tr&amp;gt;
    
      &amp;lt;rsb:last&amp;gt;
         &amp;lt;/table&amp;gt;
       &amp;lt;/div&amp;gt;  
      &amp;lt;/rsb:last&amp;gt;
    &amp;lt;/rsb:call&amp;gt;
  &amp;lt;/div&amp;gt;

  &amp;lt;!-- if a specific message number has been clicked on, display its text/html or 1st part --&amp;gt;
  &amp;lt;rsb:check attr=&amp;quot;_request.msgnumber&amp;quot;&amp;gt;
    &amp;lt;div id=&amp;quot;myemailsnippet&amp;quot; style=&amp;quot;height:30em;overflow:auto&amp;quot;&amp;gt;
      &amp;lt;rsb:call op=&amp;quot;imapGetPart?id=[_request.msgnumber]&amp;amp;partid=[_request.partid]&amp;quot;&amp;gt;
        &amp;lt;div id=&amp;quot;headers&amp;quot; style=&amp;quot;height:50px&amp;quot;&amp;gt;
          &amp;lt;table width=&amp;quot;100%&amp;quot; style=&amp;quot;background-color:LightGrey&amp;quot;&amp;gt;
            &amp;lt;tr&amp;gt;
              &amp;lt;td width=&amp;quot;75px&amp;quot;&amp;gt;From:&amp;lt;/td&amp;gt;
              &amp;lt;td&amp;gt;&amp;lt;a href=&amp;quot;mailto:[imap:fromemail | htmlencode]&amp;quot;&amp;gt;[imap:fromname]&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;
            &amp;lt;/tr&amp;gt;
            &amp;lt;tr&amp;gt;&amp;lt;td width=&amp;quot;75px&amp;quot;&amp;gt;Date:&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[imap:date]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
            &amp;lt;tr&amp;gt;&amp;lt;td width=&amp;quot;75px&amp;quot;&amp;gt;Subject:&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[imap:subject]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
            &amp;lt;tr /&amp;gt;   
          &amp;lt;/table&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;div id=&amp;quot;body&amp;quot; style=&amp;quot;overflow:auto&amp;quot;&amp;gt;
          [imap:content | Replace(&amp;#39;0A&amp;#39;,&amp;#39;&amp;lt;br&amp;gt;&amp;#39;,&amp;#39;true&amp;#39;)]
        &amp;lt;/div&amp;gt;
      &amp;lt;/rsb:call&amp;gt;
    &amp;lt;/div&amp;gt;
  &amp;lt;/rsb:check&amp;gt;

&amp;lt;/rsb:check&amp;gt;

&amp;lt;script&amp;gt;
function clearDiv(div) {
    var mydiv = document.getElementById(div); 
    mydiv.innerHTML = &amp;quot;&amp;quot;;
}
&amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;/code&gt;
		&lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 5:&lt;/b&gt; Specify your IMAP server and authentication credentials.  If you clicked &quot;Apply&quot; in the source 
		editor, you should now see a new property appear in the properties editor of the Web Part in your browser.  
		Under &quot;Web Part Inputs&quot;, you will see &quot;server&quot;, &quot;email&quot;, &quot;password&quot;, and &quot;mailbox&quot; inputs.  These inputs need to be 
		populated with the values corresponding to your IMAP server, mailbox name (e.g. &quot;Inbox&quot;), and account credentials.  
		Optionally, you can change the &quot;months&quot; and &quot;sortcriteria&quot; inputs to alter the output generated.  By default, this Web Part 
		will display messages to and from a specified email address in the past 6 months (the &quot;months&quot; input property) and then sort 
		them by reverse-date (most recent first &#65533; the &quot;sortcriteria&quot; input).
		&lt;/li&gt;
	&lt;/ul&gt;
		&lt;p&gt;
			After you have set these inputs appropriately, click &quot;Apply&quot; in the properties window and the page will reload.  Enter 
			an email address in the search box and click &quot;Search&quot;.  The emails sent to or from that email address will be displayed 
			inside the Web Part. Click on any one of those messages to load a plain text or HTMML view of the email.		
		&lt;/p&gt;
		&lt;p&gt;
			As always, you can customize the HTML in the template, or leave it as is.
		&lt;/p&gt;
		
		&lt;p&gt;
			&lt;b&gt;&lt;i&gt;Advanced Tip&lt;i&gt;&lt;/b&gt;: 
			
			Note the &quot;sortcriteria&quot; input expects a sort order formatted according to the IMAP Sort RFC (RFC 5256).  Other common 
			sort criteria are ARRIVAL, DATE, CC, FROM, SUBJECT, TO, SIZE.  Any of those criteria can be preceded with REVERSE as shown
			in the example.  Similarly, the search criteria specified inside the template itself can also be modified in the format 
			specified in the IMAPv4 RFC (Section 6.4.4 in RFC 3501).
		&lt;/p&gt;</description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/webpart-emailsearch.rst</guid>
<link>http://www.rssbus.com/kb/articles/webpart-emailsearch.rst</link>
<pubDate>Wed, 13 Jan 2010 00:00:00 GMT</pubDate>
<title>Search Email History Web Part</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>Keep your SharePoint Calendar(s) synced up with your Google Calendar.  This example Syncs a Google calendar with SharePoint using RSSBus for SharePoint.</x:description>
<x:keywords>Webpart, SharePoint, Google, Calendar</x:keywords>
<description>
	&lt;p&gt;
		The following is one method to keep your SharePoint Calendar(s) synced with your
		Google Calendar.  This particular example only syncs in one direction:  from Google to 
		SharePoint.  However, it could be set to sync in the opposite direction, or in both directions.
        This solution requires that you have the RSSBus Web Part installed (see here for instructions).
        You will also need the GoogleOps Connector, which is automatically included with the RSSBus Web Part.
	&lt;/p&gt;
	
	&lt;img src=&apos;webpart-googlecalsync-1.png&apos; /&gt;
	
	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 1:&lt;/b&gt; Log on to SharePoint and browse to your calendar.  Under Site Actions click &apos;Edit Page&apos;.&lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 2:&lt;/b&gt; Click &quot;Add a Web Part&quot; and add the RSSBus Web Part to the page. Many users prefer to drag 
		the Calendar to the top and place RSSBus Web Part directly below it.
        &lt;li&gt;&lt;b&gt;Step 3:&lt;/b&gt; Within the edit menu, click &apos;Modify Shared Web Part&apos; and open the Source Editor.&lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 4:&lt;/b&gt; Paste the following RSSBus Web Part template and click &apos;Apply&apos;.&lt;/li&gt;
	&lt;/ul&gt;
	
&lt;code lang=xml&gt;&lt;pre&gt;&amp;lt;rsb:info title=&amp;quot;Google Calendar Sync&amp;quot; description=&amp;quot;This template Syncs your SharePoint Calendar events with those in a Google Calendar account.&amp;quot;&amp;gt;
  &amp;lt;input name=&amp;quot;email&amp;quot; description=&amp;quot;The email used to authenticate with Google.&amp;quot; required=&amp;quot;true&amp;quot;/&amp;gt;
  &amp;lt;input name=&amp;quot;password&amp;quot; description=&amp;quot;The password used to authenticate with Google.&amp;quot; required=&amp;quot;true&amp;quot; style=&amp;quot;password&amp;quot;/&amp;gt;
  &amp;lt;input name=&amp;quot;calendar&amp;quot; description=&amp;quot;The SharePoint calendar to sync to.&amp;quot; default=&amp;quot;Calendar&amp;quot;/&amp;gt;
  &amp;lt;input name=&amp;quot;days&amp;quot; description=&amp;quot;The number of days to import events for.&amp;quot; default=&amp;quot;30&amp;quot;/&amp;gt;
&amp;lt;/rsb:info&amp;gt;

&amp;lt;rsb:import lib=&amp;quot;RSSBus.GoogleOps&amp;quot;/&amp;gt;

&amp;lt;!-- get all the events in the SharePoint calendar --&amp;gt;
&amp;lt;rsb:set attr=&amp;quot;list&amp;quot; value=&amp;quot;[calendar]&amp;quot;/&amp;gt;
&amp;lt;rsb:call op=&amp;quot;spListItems&amp;quot; out=&amp;quot;myitemout&amp;quot; save=&amp;quot;myspitems&amp;quot; &amp;gt;
    &amp;lt;rsb:call op=&amp;quot;spGetItem?itemid=[sp:id]&amp;quot; &amp;gt;
      &amp;lt;rsb:set attr=&amp;quot;myitemout.title&amp;quot; value=&amp;quot;[sp:title]&amp;quot;/&amp;gt;
      &amp;lt;rsb:set attr=&amp;quot;myitemout.location&amp;quot; value=&amp;quot;[sp:location | def(&amp;#39;&amp;#39;)]&amp;quot;/&amp;gt;
      &amp;lt;rsb:set attr=&amp;quot;myitemout.start_time&amp;quot; value=&amp;quot;[sp:start_time]&amp;quot;/&amp;gt;
      &amp;lt;rsb:set attr=&amp;quot;myitemout.end_time&amp;quot; value=&amp;quot;[sp:end_time]&amp;quot;/&amp;gt;
      &amp;lt;rsb:set attr=&amp;quot;myitemout.description&amp;quot; value=&amp;quot;[sp:description | def(&amp;#39;&amp;#39;)]&amp;quot; /&amp;gt;
    &amp;lt;/rsb:call&amp;gt;
&amp;lt;/rsb:call&amp;gt;

&amp;lt;!--get all the events in the Google calendar in the specified range --&amp;gt;
&amp;lt;rsb:set attr=&amp;quot;fromdate&amp;quot; value=&amp;quot;[null | date(&amp;#39;d&amp;#39;)]&amp;quot;/&amp;gt;
&amp;lt;rsb:set attr=&amp;quot;todate&amp;quot; value=&amp;quot;[fromdate | dateadd(day, [days]) | todate(&amp;#39;d&amp;#39;) ]&amp;quot;/&amp;gt;
&amp;lt;rsb:call op=&amp;quot;googleCalSearch&amp;quot; out=&amp;quot;mygcalout&amp;quot; save=&amp;quot;mygitems&amp;quot;&amp;gt;
  &amp;lt;rsb:set attr=&amp;quot;mygcalout.title&amp;quot; value=&amp;quot;[ggl:title]&amp;quot;/&amp;gt;
  &amp;lt;rsb:set attr=&amp;quot;mygcalout.location&amp;quot; value=&amp;quot;[ggl:where | def(&amp;#39;&amp;#39;)]&amp;quot;/&amp;gt;
  &amp;lt;rsb:set attr=&amp;quot;mygcalout.start_time&amp;quot; value=&amp;quot;[ggl:starttime | todate]&amp;quot;/&amp;gt;
  &amp;lt;rsb:set attr=&amp;quot;mygcalout.end_time&amp;quot; value=&amp;quot;[ggl:endtime | todate]&amp;quot;/&amp;gt;
  &amp;lt;rsb:set attr=&amp;quot;mygcalout.description&amp;quot; value=&amp;quot;[ggl:description | def(&amp;#39;&amp;#39;)]&amp;quot;/&amp;gt;
&amp;lt;/rsb:call&amp;gt;

&amp;lt;!-- now find out what is in google calendar that is not in the SharePoint list, using title and start time as the filter --&amp;gt;
&amp;lt;rsb:set attr=&amp;quot;diff.base&amp;quot; value=&amp;quot;[_feeds.myspitems]&amp;quot;/&amp;gt;
&amp;lt;rsb:set attr=&amp;quot;diff.feed&amp;quot; value=&amp;quot;[_feeds.mygitems]&amp;quot;/&amp;gt;
&amp;lt;rsb:set attr=&amp;quot;diff.filter&amp;quot; value=&amp;quot;title,start_time&amp;quot;/&amp;gt;
&amp;lt;rsb:set attr=&amp;quot;diff.list&amp;quot; value=&amp;quot;[list]&amp;quot;/&amp;gt;
&amp;lt;rsb:call op=&amp;quot;feedDiff&amp;quot; in=&amp;quot;diff&amp;quot;&amp;gt;
  &amp;lt;!-- for everything not in the sp list, add it!  --&amp;gt;
  &amp;lt;rsb:set attr=&amp;quot;name#&amp;quot; value=&amp;quot;Title&amp;quot;/&amp;gt;
  &amp;lt;rsb:set attr=&amp;quot;name#&amp;quot; value=&amp;quot;Location&amp;quot;/&amp;gt;
  &amp;lt;rsb:set attr=&amp;quot;name#&amp;quot; value=&amp;quot;Start Time&amp;quot;/&amp;gt;
  &amp;lt;rsb:set attr=&amp;quot;name#&amp;quot; value=&amp;quot;End Time&amp;quot;/&amp;gt;
  &amp;lt;rsb:set attr=&amp;quot;name#&amp;quot; value=&amp;quot;Description&amp;quot;/&amp;gt;
  &amp;lt;rsb:set attr=&amp;quot;value#&amp;quot; value=&amp;quot;[title]&amp;quot;/&amp;gt;
  &amp;lt;rsb:set attr=&amp;quot;value#&amp;quot; value=&amp;quot;[location | def(&amp;#39;&amp;#39;)]&amp;quot;/&amp;gt;
  &amp;lt;rsb:set attr=&amp;quot;value#&amp;quot; value=&amp;quot;[start_time]&amp;quot;/&amp;gt;
  &amp;lt;rsb:set attr=&amp;quot;value#&amp;quot; value=&amp;quot;[end_time]&amp;quot;/&amp;gt;
  &amp;lt;rsb:set attr=&amp;quot;value#&amp;quot; value=&amp;quot;[description | def(&amp;#39;&amp;#39;)]&amp;quot;/&amp;gt;
  &amp;lt;rsb:call op=&amp;quot;spAddItem&amp;quot;/&amp;gt;
  &amp;lt;b&amp;gt;[title]&amp;lt;/b&amp;gt; Successfully imported from Google Calendar.&amp;lt;br&amp;gt;
&amp;lt;/rsb:call&amp;gt;&lt;/pre&gt;&lt;/code&gt;
	
	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 5:&lt;/b&gt; After you click Apply, specify your Google Calendar email and password. Next, specify the 
		name of the calendar to sync with (i.e. &quot;Calendar&quot;), and the number of days you want it to keep synced at a 
		time.  Optionally, you can embed inputs into the script, instead of leaving them as Web 
		Part properties.  To embed the inputs, change the rsb:info section of code to the following:&lt;/li&gt;
	&lt;/ul&gt;
	
&lt;code&gt;&lt;pre&gt;&amp;lt;rsb:set attr=&amp;quot;email&amp;quot; value=&amp;quot;YOUREMAIL&amp;quot; /&amp;gt; 
&amp;lt;rsb:set attr=&amp;quot;password&amp;quot; value=&amp;quot;YOURPASSWORD&amp;quot; /&amp;gt; 
&amp;lt;rsb:set attr=&amp;quot;calendar&amp;quot; value=&amp;quot;YOURCALENDARNAME&amp;quot; /&amp;gt; 
&amp;lt;rsb:set attr=&amp;quot;days&amp;quot; value=&amp;quot;30&amp;quot; /&amp;gt;&lt;/pre&gt;&lt;/code&gt;
	
	&lt;p&gt;Now, the Calendar page is automatically be updated with the latest items from Google Calendar.&lt;/p&gt;</description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/webpart-googlecalsync.rst</guid>
<link>http://www.rssbus.com/kb/articles/webpart-googlecalsync.rst</link>
<pubDate>Wed, 13 Jan 2010 00:00:00 GMT</pubDate>
<title>Keep Your SharePoint Calendar Synced with Google</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>Create a dynamic image rotator that connects the SharePoint picture library with other SharePoint pages.</x:description>
<x:keywords>Webpart, SharePoint, image, rotator</x:keywords>
<description>
	&lt;p&gt;
		This example shows how to connect a dynamic image rotator Web Part with the SharePoint picture library.
	&lt;/p&gt;
	
	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 1:&lt;/b&gt; Ensure the RSSBus Web Part is installed. &lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 2:&lt;/b&gt; 
			 Choose your images and upload them to a Picture Library.  The Picture Library should be 
			 located within the same site you plan to add the RSSBus Web Part to.
		&lt;/li&gt;
        &lt;li&gt;&lt;b&gt;Step 3:&lt;/b&gt; Add the RSSBus Web Part to your page and paste the following template into its source editor.  &lt;/li&gt;
	&lt;/ul&gt;
	
&lt;code lang=xml&gt;&lt;pre&gt;&amp;lt;!-- Set the Picture Library that you want to use  --&amp;gt;
&amp;lt;rsb:set attr=&amp;quot;list&amp;quot; value=&amp;quot;Picture Library&amp;quot; /&amp;gt;

&amp;lt;!-- Call the spListItems operation, save the results. --&amp;gt;
&amp;lt;rsb:call op=&amp;quot;spListItems&amp;quot; save=&amp;quot;pictures&amp;quot; /&amp;gt;

&amp;lt;!-- Call the feedRandom operation to randomize the saved spListItems results --&amp;gt;
&amp;lt;rsb:call op=&amp;quot;feedRandom?feed=[_feeds.pictures | urlencode]&amp;quot; pagesize=&amp;quot;1&amp;quot;&amp;gt;
  &amp;lt;!-- Output the image as html --&amp;gt;
  &amp;lt;img src=&amp;quot;[sp:url]&amp;quot; width=&#65533;150px&#65533; border=&amp;quot;0&amp;quot; align=&amp;quot;right&amp;quot; /&amp;gt;
&amp;lt;/rsb:call&amp;gt;&lt;/pre&gt;&lt;/code&gt;

&lt;p&gt;
	Paste the template into the source editor and change &quot;Picture Library&#65533; to the 
	name of your library. For best results size the pictures before uploading 
	them to your library and delete the width=&quot;150px&quot; setting from the image tag in the HTML.
&lt;/p&gt;</description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/webpart-imagerotator.rst</guid>
<link>http://www.rssbus.com/kb/articles/webpart-imagerotator.rst</link>
<pubDate>Wed, 13 Jan 2010 00:00:00 GMT</pubDate>
<title>Simple SharePoint Image Rotator</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>Create a Web Part to display a list of the most recently modified document libraries/documents on the site in 30 seconds. </x:description>
<x:keywords>Webpart, SharePoint, lists, documents</x:keywords>
<description>
	&lt;p&gt;
        SharePoint sites often contain multiple libraries, with each including dozens or even hundreds of documents. 
        This example will detail how to create a Web Part that displays a list of the most recently modified document libraries/documents, along with how to simply view a quick list of all libraries.
	&lt;/p&gt;
	
	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 1:&lt;/b&gt; Ensure the RSSBus Web Part is installed. &lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 2:&lt;/b&gt; Make sure you have access to a few document libraries with documents inside.
		&lt;/li&gt;
        &lt;li&gt;&lt;b&gt;Step 3:&lt;/b&gt; Add the RSSBus Web Part to your page and paste the following template into its source editor.  
		Click &quot;Apply&quot; in the template editor and the template will go into effect, giving you a list of recently modified 
		libraries and documents.&lt;/li&gt;
	&lt;/ul&gt;
	
&lt;code lang=xml&gt;&lt;pre&gt;&amp;lt;rsb:info&amp;gt;
   &amp;lt;input name=&amp;quot;maxlibraries&amp;quot; default=&amp;quot;5&amp;quot; /&amp;gt;
   &amp;lt;input name=&amp;quot;maxdocuments&amp;quot; default=&amp;quot;5&amp;quot; /&amp;gt;
&amp;lt;/rsb:info&amp;gt;

&amp;lt;rsb:call op=&amp;quot;spListLists?listtype=DocumentLibrary&amp;quot; save=&amp;quot;lists&amp;quot; /&amp;gt; 
  &amp;lt;table width=&amp;quot;100%&amp;quot;&amp;gt; 
  &amp;lt;rsb:call op=&amp;quot;feedSort?type=date&amp;amp;sort=-sp:item_modified&amp;amp;feed=[_feeds.lists | urlencode]&amp;quot; pagesize=&amp;quot;[maxlibraries]&amp;quot; &amp;gt;
    &amp;lt;tr&amp;gt;
      &amp;lt;th style=&amp;quot;background-color:LightGrey; white-space:nowrap&amp;quot; colspan=&amp;quot;2&amp;quot;&amp;gt; 
        &amp;lt;a href=&amp;quot;[sp:url]&amp;quot;&amp;gt;[rss:title]&amp;lt;/a&amp;gt; 
      &amp;lt;/th&amp;gt;  
    &amp;lt;/tr&amp;gt; 
  &amp;lt;rsb:call op=&amp;quot;spListDocuments?library=[rss:title]&amp;quot; save=&amp;quot;mydocs&amp;quot; /&amp;gt; 
  &amp;lt;rsb:call op=&amp;quot;feedSort?type=date&amp;amp;sort=-sp:modified&amp;amp;feed=[_feeds.mydocs | urlencode]&amp;quot; pagesize=&amp;quot;[maxdocuments]&amp;quot; &amp;gt; 
    &amp;lt;tr&amp;gt; 
      &amp;lt;td&amp;gt;&amp;lt;a href=&amp;quot;[sp:url]&amp;quot;&amp;gt;[rss:title]&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;  
      &amp;lt;td&amp;gt; 
        &amp;lt;rsb:set attr=&amp;quot;today&amp;quot; value=&amp;quot;[sp:modified | todate(&amp;#39;MM/dd/yy&amp;#39;)]&amp;quot; /&amp;gt; 
        &amp;lt;rsb:equals attr=&amp;quot;today&amp;quot; value=&amp;quot;[null | date(&amp;#39;MM/dd/yy&amp;#39;)]&amp;quot;&amp;gt; 
          [sp:modified | todate(&amp;#39;hh:mm:ss&amp;#39;)] 
        &amp;lt;rsb:else&amp;gt; 
          [sp:modified | todate(&amp;#39;MM/dd/yy&amp;#39;)] 
        &amp;lt;/rsb:else&amp;gt; 
        &amp;lt;/rsb:equals&amp;gt; 
      &amp;lt;/td&amp;gt; 
    &amp;lt;/tr&amp;gt; 
  &amp;lt;/rsb:call&amp;gt; 
&amp;lt;/rsb:call&amp;gt; 
&amp;lt;/table&amp;gt;&lt;/pre&gt;&lt;/code&gt;
&lt;p&gt;
	This template lists all of your document libraries and sorts them by the last modified date. Also, for each 
    libraries, it lists the documents within and sorts by the last modified dates.  The result is a view 
	of the most recently modified documents on the site. 
&lt;/p&gt;		
&lt;p&gt;
	After you paste this template into the source editor, click &apos;Apply&apos;.  You can customize the HTML in the template, or leave it as is.  
    At this point you can change maximum number of libraries and documents that 
	will be listed in the view by setting those properties in the property tab of the designer.
&lt;/p&gt;

&lt;p&gt;As always, you can customize the html in the template, or leave it as is.&lt;/p&gt;	</description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/webpart-listdocuments.rst</guid>
<link>http://www.rssbus.com/kb/articles/webpart-listdocuments.rst</link>
<pubDate>Wed, 13 Jan 2010 00:00:00 GMT</pubDate>
<title>List Document Libraries and Documents</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>Search multiple online resources simultaneously directly from SharePoint</x:description>
<x:keywords>Webpart, SharePoint, search, google, yahoo, twitter</x:keywords>
<description>
	&lt;img src=&apos;webpart-multisearch-1.jpg&apos; /&gt;
	
	&lt;p&gt;
		Use the RSSBus WebPart to create a multi-source search in SharePoint, allowing you to enter one 
		search term and see results from a variety of different search services.  The RSSBus 
		WebPart template is simple due to its built-in feed manipulation capabilities.
	&lt;/p&gt;

	
&lt;code lang=xml&gt;&lt;pre&gt;&amp;lt;div id=&amp;quot;search&amp;quot;&amp;gt;
   &amp;lt;label for=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Search:&amp;lt;/b&amp;gt;&amp;lt;/label&amp;gt;
   &amp;lt;input id=&amp;quot;search&amp;quot; type=&amp;quot;text&amp;quot; name=&amp;quot;search&amp;quot; size=&amp;quot;25&amp;quot; value=&amp;quot;[_request.form:search| def(&amp;#39;&amp;#39;)]&amp;quot; /&amp;gt;
   &amp;lt;input type=submit value=&amp;quot;Search&amp;quot; /&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;rsb:check attr=&amp;quot;_request.form:search&amp;quot;&amp;gt;
  &amp;lt;rsb:set item=&amp;quot;input&amp;quot; attr=&amp;quot;feed#1&amp;quot; value=&amp;quot;http://search.msn.com/results.aspx?q=[_request.form:search]&amp;amp;format=rss&amp;amp;FORM=ZZRE&amp;quot; /&amp;gt; 
  &amp;lt;rsb:set item=&amp;quot;input&amp;quot; attr=&amp;quot;feed#2&amp;quot; value=&amp;quot;http://news.search.yahoo.com/news/rss?ei=UTF-8&amp;amp;p=[_request.form:search]&amp;quot; /&amp;gt; 
  &amp;lt;rsb:set item=&amp;quot;input&amp;quot; attr=&amp;quot;feed#3&amp;quot; value=&amp;quot;http://www.flickr.com/services/feeds/photos_public.gne?tags=[_request.form:search]&amp;amp;format=rss_200&amp;quot; /&amp;gt; 
  &amp;lt;rsb:set item=&amp;quot;input&amp;quot; attr=&amp;quot;feed#4&amp;quot; value=&amp;quot;http://news.google.com/news?hl=en&amp;amp;q=[_request.form:search]&amp;amp;ie=UTF-8&amp;amp;output=rss&amp;quot; /&amp;gt; 
  &amp;lt;rsb:set item=&amp;quot;input&amp;quot; attr=&amp;quot;feed#5&amp;quot; value=&amp;quot;http://search.twitter.com/search.rss?q=[_request.form:search]&amp;quot; /&amp;gt; 

  &amp;lt;rsb:call op=&amp;quot;feedUnion&amp;quot; in=&amp;quot;input&amp;quot;&amp;gt;
    &amp;lt;a href=&amp;quot;[rss:link]&amp;quot;&amp;gt;[rss:title]&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;
    &amp;lt;div&amp;gt;[rss:description]&amp;lt;/div&amp;gt;&amp;lt;p /&amp;gt;
    &amp;lt;hr /&amp;gt;
  &amp;lt;/rsb:call&amp;gt;
&amp;lt;/rsb:check&amp;gt;&lt;/pre&gt;&lt;/code&gt;
	&lt;p&gt;
		The first five lines are HTML to create a search query text box and submit button.  The form tag was not used, instead you can 
		piggy back on the existing form available in every SharePoint page.  Next, check to see if the search input variable 
		exists in the form of the incoming HTTP request.  If it is, then set source feeds, call for the union of the feeds 
		(duplicates are automatically discarded), and output HTML for each result.
	&lt;/p&gt;</description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/webpart-multisearch.rst</guid>
<link>http://www.rssbus.com/kb/articles/webpart-multisearch.rst</link>
<pubDate>Wed, 13 Jan 2010 00:00:00 GMT</pubDate>
<title>Multi-Source Search in SharePoint</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>Use the RSSBus NntpOps connector to access Usenet Newsgroups from SharePoint sites.</x:description>
<x:keywords>Webpart, SharePoint, NNTP, USENET</x:keywords>
<description>
	&lt;img src=&apos;webpart-nntpbrowser-1.jpg&apos; /&gt;
	
	&lt;p&gt;
		The following will show you how to add a Usenet Newsgroup browser to your SharePoint site with a short RSSBus SharePoint WebPart template.  
		The template works by importing the RSSBus NntpOps Connector. 
         
        The template calls the nntpListArticles operation to list the articles of a particular Newsgroup and displays them in a table. 
        Then, when an article is clicked on, it calls the nntpGetArticle operation to retrieve the actual article (only the first 1000 lines of the article).
		If the thread is larger than 1000 lines, it will provide a link to view the message in Google Groups.
      
		Copy and paste the WebPart template below into your own RSSBus SharePoint WebPart (with the NntpOps connector installed) and it will work right away.  
		This template browses the microsoft.public.sharepoint.windowsservices group (you can set your own news server, group, etc.).
	&lt;/p&gt;

	
&lt;code lang=xml&gt;&lt;pre&gt;&amp;lt;rsb:import lib=&amp;quot;RSSBus.NntpOps&amp;quot; /&amp;gt;
&amp;lt;div style=&amp;quot;height:100;overflow:auto&amp;quot;&amp;gt; 
  &amp;lt;table width=&amp;quot;98%&amp;quot;&amp;gt;
   &amp;lt;tr&amp;gt;
    &amp;lt;th style=&amp;quot;background-color:LightGrey; white-space:nowrap&amp;quot;&amp;gt;Subject&amp;lt;/th&amp;gt;                              
    &amp;lt;th style=&amp;quot;background-color:LightGrey; white-space:nowrap&amp;quot;&amp;gt;Author&amp;lt;/th&amp;gt;                        
    &amp;lt;th style=&amp;quot;background-color:LightGrey; white-space:nowrap&amp;quot;&amp;gt;Size&amp;lt;/th&amp;gt;                            
    &amp;lt;th style=&amp;quot;background-color:LightGrey; white-space:nowrap&amp;quot;&amp;gt;Date&amp;lt;/th&amp;gt;                                
  &amp;lt;/tr&amp;gt;  

  &amp;lt;rsb:set attr=&amp;quot;group&amp;quot; value=&amp;quot;microsoft.public.sharepoint.windowsservices&amp;quot; /&amp;gt;
  &amp;lt;rsb:set attr=&amp;quot;range&amp;quot; value=&amp;quot;25&amp;quot; /&amp;gt;
  &amp;lt;rsb:set attr=&amp;quot;server&amp;quot; value=&amp;quot;msnews.microsoft.com&amp;quot; /&amp;gt;
  &amp;lt;rsb:call op=&amp;quot;nntpListArticles&amp;quot;&amp;gt;
   &amp;lt;tr&amp;gt;
     &amp;lt;td style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;?msgnumber=[nntp:number]&amp;quot;&amp;gt;[nntp:subject | truncate(&amp;#39;60&amp;#39;)]&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;
     &amp;lt;td style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;[nntp:author]&amp;lt;/td&amp;gt;
     &amp;lt;td style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;[nntp:size]&amp;lt;/td&amp;gt;
     &amp;lt;td style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;[nntp:date]&amp;lt;/td&amp;gt;
   &amp;lt;/tr&amp;gt;
  &amp;lt;/rsb:call&amp;gt;
&amp;lt;/table&amp;gt;
&amp;lt;/div&amp;gt;
 &amp;lt;div&amp;gt;
  &amp;lt;rsb:check attr=&amp;quot;_request.msgnumber&amp;quot;&amp;gt;
  &amp;lt;hr /&amp;gt;
   &amp;lt;rsb:call op=&amp;quot;nntpGetArticle?maxlines=1000&amp;amp;article=[_request.msgnumber]&amp;quot;&amp;gt;
    &amp;lt;div id=&amp;quot;headers&amp;quot;&amp;gt;
    &amp;lt;table width=&amp;quot;98%&amp;quot; style=&amp;quot;background-color:LightGrey&amp;quot;&amp;gt;
      &amp;lt;tr&amp;gt;
        &amp;lt;td width=&amp;quot;75px&amp;quot;&amp;gt;From:&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;&amp;lt;a href=&amp;quot;mailto:[nntp:author | htmlencode]&amp;quot;&amp;gt;[nntp:author | htmlencode]&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;
      &amp;lt;/tr&amp;gt;
      &amp;lt;tr&amp;gt;
       &amp;lt;td width=&amp;quot;75px&amp;quot;&amp;gt;Date:&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;[nntp:date]&amp;lt;/td&amp;gt;
      &amp;lt;/tr&amp;gt;
      &amp;lt;tr&amp;gt;
        &amp;lt;td width=&amp;quot;75px&amp;quot;&amp;gt;Subject:&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;[nntp:subject]&amp;lt;/td&amp;gt;
      &amp;lt;/tr&amp;gt;
      &amp;lt;tr /&amp;gt;
      &amp;lt;tr&amp;gt;
        &amp;lt;td colspan=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;http://groups.google.com/groups?threadm=[nntp:id | Replace(&amp;#39;&amp;lt;&amp;#39;, &amp;#39;&amp;#39;) | Replace(&amp;#39;&amp;gt;&amp;#39;, &amp;#39;&amp;#39;) | urlencode]&amp;quot;&amp;gt;View in Google Groups&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;
      &amp;lt;/tr&amp;gt;
    &amp;lt;/table&amp;gt;
  &amp;lt;/div&amp;gt;
   &amp;lt;div id=&amp;quot;body&amp;quot; style=&amp;quot;height:400;overflow:auto&amp;quot;&amp;gt;
    &amp;lt;hr /&amp;gt;
    [nntp:body | Replace(&amp;#39;0A&amp;#39;,&amp;#39;&amp;lt;br&amp;gt;&amp;#39;,&amp;#39;true&amp;#39;)]
  &amp;lt;/div&amp;gt;
  &amp;lt;p /&amp;gt;
  &amp;lt;a href=&amp;quot;http://groups.google.com/groups?threadm=[nntp:id | Replace(&amp;#39;&amp;lt;&amp;#39;, &amp;#39;&amp;#39;) | Replace(&amp;#39;&amp;gt;&amp;#39;, &amp;#39;&amp;#39;) | urlencode]&amp;quot;&amp;gt;View in Google Groups&amp;lt;/a&amp;gt;
  &amp;lt;/rsb:call&amp;gt;
  &amp;lt;/rsb:check&amp;gt;
&amp;lt;/div&amp;gt;&lt;/pre&gt;&lt;/code&gt;
	&lt;p&gt;
		If you want to make the news server and group editable via the &quot;Modified Shared WebPart&quot; property settings, simply delete the rsb:set lines where they are hard-coded in the template,
		and add the following at the top:
	&lt;/p&gt;
&lt;code lang=xml&gt;&lt;pre&gt;&amp;lt;rsb:info title=&amp;quot;RSSBus SharePoint WebPart: USENET Newsgroup Browser&amp;quot;&amp;gt;
  &amp;lt;input name=&amp;quot;Server&amp;quot; default=&amp;quot;msnews.microsoft.com&amp;quot; required=&amp;quot;true&amp;quot; /&amp;gt;
  &amp;lt;input name=&amp;quot;Group&amp;quot; default=&amp;quot;microsoft.public.sharepoint.windowsservices&amp;quot; required=&amp;quot;true&amp;quot; /&amp;gt;
  &amp;lt;input name=&amp;quot;Range&amp;quot; default=&amp;quot;25&amp;quot; /&amp;gt;
&amp;lt;/rsb:info&amp;gt;&lt;/pre&gt;&lt;/code&gt;
	&lt;p&gt;
		The above tells the WebPart to create three inputs: Server, Group, and Range.  
        The NntpOps Connector will be able to see the inputs and work with them.
	&lt;/p&gt;</description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/webpart-nntpbrowser.rst</guid>
<link>http://www.rssbus.com/kb/articles/webpart-nntpbrowser.rst</link>
<pubDate>Wed, 13 Jan 2010 00:00:00 GMT</pubDate>
<title>Usenet Newsgroup Browser in SharePoint</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>Customize SharePoint RSS Feeds with extended RSS meta information</x:description>
<x:keywords>Webpart, SharePoint, RSS, Feeds</x:keywords>
<description>
	
&lt;p&gt;
	The default RSS feeds in SharePoint are basic and can be customized with extended RSS meta-information.
&lt;/p&gt;
&lt;p&gt;
	First, install the RSSBus SharePoint WebPart.  After running the setup, go to the Site Collection Features 
	page to activate the Web Part.  In order to create custom RSS feeds, activate the &quot;RSSBus 
	Service Handler&quot; feature. 
&lt;/p&gt;
&lt;p&gt;
	In this example a special document library called &quot;Really Simple Services&quot; was created for the feeds.
    For the first feed, a new document was added to the library and named 
    &quot;sp-rss.rst&quot; with the following contents:
&lt;/p&gt;

&lt;code&gt;&lt;pre&gt;&amp;lt;rsb:info title=&amp;quot;My Custom RSS Feed&amp;quot; description=&amp;quot;This is my custom RSS feed description&amp;quot; /&amp;gt;  
&amp;lt;!-- this could also come as input in the URL --&amp;gt;    
&amp;lt;rsb:set attr=&amp;quot;list&amp;quot; value=&amp;quot;Shared Documents&amp;quot;/&amp;gt; 
&amp;lt;rsb:set item=&amp;quot;_meta&amp;quot; attr=&amp;quot;rss:title&amp;quot; value=&amp;quot;Custom SharePoint RSS: [list]&amp;quot; /&amp;gt;        
    
&amp;lt;rsb:call op=&amp;quot;spListItems&amp;quot; output=&amp;quot;out&amp;quot;&amp;gt;  
 &amp;lt;rsb:push title=&amp;quot;[rss:title | def(&amp;#39;untitled item&amp;#39;)]&amp;quot;&amp;gt; 
  [out.*]  
 &amp;lt;/rsb:push&amp;gt;  &amp;lt;/rsb:call&amp;gt;&lt;/pre&gt;&lt;/code&gt; 

&lt;p&gt;
	Next, call this custom RSS Feed as would be expected (i.e. &lt;i&gt;http://myserver/Really Simple Services/sp-rss.rsb&lt;/i&gt;). 
	Except, when you hit the URL instead of downloading a document, you will get an RSS Feed.  This example generates an 
	RSS Feed out of a specific list, but it can be changed to generate an RSS feed out of any list by 
	getting the list from the URL. For example:
&lt;/p&gt;

&lt;code&gt;&lt;pre&gt;&amp;lt;rsb:info&amp;gt;  
 &amp;lt;input name=&amp;quot;list&amp;quot; default=&amp;quot;Shared Documents&amp;quot; /&amp;gt; 
&amp;lt;/rsb:info&amp;gt;      &amp;lt;rsb:set item=&amp;quot;_meta&amp;quot; attr=&amp;quot;rss:title&amp;quot; value=&amp;quot;Custom SharePoint RSS: [list]&amp;quot; /&amp;gt;        
    
&amp;lt;rsb:call op=&amp;quot;spListItems&amp;quot; output=&amp;quot;out&amp;quot;&amp;gt;  
 &amp;lt;rsb:push title=&amp;quot;[rss:title | def(&amp;#39;untitled item&amp;#39;)]&amp;quot;&amp;gt; 
  [out.*]  
 &amp;lt;/rsb:push&amp;gt; 
&amp;lt;/rsb:call&amp;gt;&lt;/pre&gt;&lt;/code&gt;

&lt;p&gt;
	Now, if you call the same URL, the Shared Documents will be returned.  But, if a specific list is added to the URL, that list will be returned instead 
    For example: &lt;i&gt;http://myserver/Really Simple Services/sp-rss.rsb?list=Other Documents.&lt;/i&gt; The difference 
	in the script itself is that the &quot;list&quot; name has been moved from an rsb:set (hard-coded) to the rsb:info input. 
&lt;/p&gt;
</description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/webpart-sharepoint-customrss.rst</guid>
<link>http://www.rssbus.com/kb/articles/webpart-sharepoint-customrss.rst</link>
<pubDate>Wed, 13 Jan 2010 00:00:00 GMT</pubDate>
<title>Customize SharePoint RSS Feeds</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>Shows how users can easily integrate shipping and tracking with SharePoint.  Input a tracking number for UPS, USPS, or Fedex and then display tracking events for that shipment in an easy to read table.</x:description>
<x:keywords>Webpart, SharePoint, FedEx, UPS, USPS</x:keywords>
<description>
	&lt;p&gt;
		This sample allows the user to input a tracking number for UPS, USPS, or Fedex and then display tracking events
		in an easy-to-read table.
	&lt;/p&gt;
	
	&lt;img src=&apos;webpart-shippingtracking-1.png&apos; /&gt;
	
	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 1:&lt;/b&gt; Ensure the RSSBus Web Part is installed.&lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 2:&lt;/b&gt; Install the  UPS, USPS, and/or FedEx Connectors.  You don&#65533;t need them all if you don&#65533;t want them 
		all, you only need the ones you want to be able to track packages for.  Make sure that you have service credentials 
		for the shipping companies you want to use.  UPS, USPS, and Fedex all require user/password/etc in order to reach their 
		package tracking web services.
        &lt;li&gt;&lt;b&gt;Step 3:&lt;/b&gt; Add the RSSBus WebPart to your page and paste the following template into its source editor, and click &quot;Apply&quot;.&lt;/li&gt;
	&lt;/ul&gt;
	
&lt;code lang=xml&gt;&lt;pre&gt;&amp;lt;rsb:info&amp;gt;
   &amp;lt;input name=&amp;quot;ups-accesskey&amp;quot; required=&amp;quot;true&amp;quot; /&amp;gt;
   &amp;lt;input name=&amp;quot;ups-accountnumber&amp;quot; required=&amp;quot;true&amp;quot; /&amp;gt;
   &amp;lt;input name=&amp;quot;ups-user&amp;quot; required=&amp;quot;true&amp;quot; /&amp;gt;
   &amp;lt;input name=&amp;quot;ups-password&amp;quot; required=&amp;quot;true&amp;quot; /&amp;gt;
   &amp;lt;input name=&amp;quot;usps-user&amp;quot; required=&amp;quot;true&amp;quot; /&amp;gt;
   &amp;lt;input name=&amp;quot;usps-password&amp;quot; required=&amp;quot;true&amp;quot; /&amp;gt;
   &amp;lt;input name=&amp;quot;fedex-accountnumber&amp;quot; required=&amp;quot;true&amp;quot; /&amp;gt;
   &amp;lt;input name=&amp;quot;fedex-meternumber&amp;quot; required=&amp;quot;true&amp;quot; /&amp;gt;
   &amp;lt;input name=&amp;quot;fedex-developerkey&amp;quot; required=&amp;quot;true&amp;quot; /&amp;gt;
   &amp;lt;input name=&amp;quot;fedex-password&amp;quot; required=&amp;quot;true&amp;quot; /&amp;gt;
&amp;lt;/rsb:info&amp;gt;

&amp;lt;!-- a form to accept tracking number and shipping company --&amp;gt; 
&amp;lt;div id=&amp;quot;trackinginput&amp;quot;&amp;gt;
 &amp;lt;table cellspacing=&amp;quot;5px&amp;quot;&amp;gt;
 &amp;lt;tr&amp;gt;
   &amp;lt;td&amp;gt;Tracking Number:&amp;lt;/td&amp;gt;
   &amp;lt;td&amp;gt;
     &amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;trackingnumber&amp;quot; value=&amp;quot;&amp;quot; size=&amp;quot;25&amp;quot;/&amp;gt;
   &amp;lt;/td&amp;gt;
   &amp;lt;td align=&amp;quot;right&amp;quot; colspan=&amp;quot;2&amp;quot;&amp;gt;
     &amp;lt;input type=&amp;quot;radio&amp;quot; name=&amp;quot;shipper&amp;quot; value=&amp;quot;UPS&amp;quot;&amp;gt;UPS
     &amp;lt;input type=&amp;quot;radio&amp;quot; name=&amp;quot;shipper&amp;quot; value=&amp;quot;USPS&amp;quot;&amp;gt;USPS
     &amp;lt;input type=&amp;quot;radio&amp;quot; name=&amp;quot;shipper&amp;quot; value=&amp;quot;FedEx&amp;quot; checked&amp;gt;FedEx
   &amp;lt;/td&amp;gt;
   &amp;lt;td align=&amp;quot;right&amp;quot;&amp;gt;
     &amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;Track&amp;quot; /&amp;gt;
   &amp;lt;/td&amp;gt;
 &amp;lt;/tr&amp;gt;
 &amp;lt;/table&amp;gt;                              
&amp;lt;/div&amp;gt;

&amp;lt;!-- when the form is posted, display a table of ship events --&amp;gt; 
&amp;lt;rsb:check attr=&amp;quot;_request.form:trackingnumber&amp;quot;&amp;gt;
  &amp;lt;div style=&amp;quot;height:250;overflow:auto&amp;quot;&amp;gt;
    &amp;lt;rsb:select value=&amp;quot;[_request.form:shipper | tolower]&amp;quot;&amp;gt;
     &amp;lt;rsb:case match=&amp;quot;exact&amp;quot; value=&amp;quot;ups&amp;quot;&amp;gt;
      &amp;lt;rsb:import lib=&amp;quot;RSSBus.UpsOps&amp;quot; /&amp;gt;
      &amp;lt;rsb:set attr=&amp;quot;ups.user&amp;quot; value=&amp;quot;[ups-user]&amp;quot; /&amp;gt;
      &amp;lt;rsb:set attr=&amp;quot;ups.password&amp;quot; value=&amp;quot;[ups-password]&amp;quot; /&amp;gt;
      &amp;lt;rsb:set attr=&amp;quot;ups.accesskey&amp;quot; value=&amp;quot;[ups-accesskey]&amp;quot; /&amp;gt;
      &amp;lt;rsb:set attr=&amp;quot;ups.accountnumber&amp;quot; value=&amp;quot;[ups-accountnumber]&amp;quot; /&amp;gt;
      &amp;lt;rsb:set attr=&amp;quot;ups.url&amp;quot; value=&amp;quot;https://wwwcie.ups.com/ups.app/xml/Track&amp;quot; /&amp;gt;          
      &amp;lt;rsb:set attr=&amp;quot;ups.trackingid&amp;quot; value=&amp;quot;[_request.form:trackingnumber]&amp;quot; /&amp;gt;                 
      &amp;lt;rsb:set attr=&amp;quot;global.operation&amp;quot; value=&amp;quot;upsTrack&amp;quot; /&amp;gt;
      &amp;lt;rsb:set attr=&amp;quot;global.input&amp;quot; value=&amp;quot;ups&amp;quot; /&amp;gt;
    &amp;lt;/rsb:case&amp;gt;
    &amp;lt;rsb:case match=&amp;quot;exact&amp;quot; value=&amp;quot;usps&amp;quot;&amp;gt;
     &amp;lt;rsb:import lib=&amp;quot;RSSBus.UspsOps&amp;quot; /&amp;gt;
     &amp;lt;rsb:set attr=&amp;quot;usps.user&amp;quot; value=&amp;quot;[usps-user]&amp;quot; /&amp;gt;
     &amp;lt;rsb:set attr=&amp;quot;usps.password&amp;quot; value=&amp;quot;[usps-password]&amp;quot; /&amp;gt;
     &amp;lt;rsb:set attr=&amp;quot;usps.url&amp;quot; value=&amp;quot;http://production.shippingapis.com/ShippingAPI.dll&amp;quot; /&amp;gt;           
     &amp;lt;rsb:set attr=&amp;quot;usps.trackingid&amp;quot; value=&amp;quot;[_request.form:trackingnumber]&amp;quot; /&amp;gt;
     &amp;lt;rsb:set attr=&amp;quot;global.operation&amp;quot; value=&amp;quot;uspsTrack&amp;quot; /&amp;gt;
     &amp;lt;rsb:set attr=&amp;quot;global.input&amp;quot; value=&amp;quot;usps&amp;quot; /&amp;gt;    
    &amp;lt;/rsb:case&amp;gt;
    &amp;lt;rsb:case match=&amp;quot;exact&amp;quot; value=&amp;quot;fedex&amp;quot;&amp;gt;
     &amp;lt;rsb:import lib=&amp;quot;RSSBus.FedexOps&amp;quot; /&amp;gt;
     &amp;lt;rsb:set attr=&amp;quot;fedex.password&amp;quot; value=&amp;quot;[fedex-password]&amp;quot; /&amp;gt;
     &amp;lt;rsb:set attr=&amp;quot;fedex.accountnumber&amp;quot; value=&amp;quot;[fedex-accountnumber]&amp;quot; /&amp;gt;
     &amp;lt;rsb:set attr=&amp;quot;fedex.meternumber&amp;quot; value=&amp;quot;[fedex-meternumber]&amp;quot; /&amp;gt;
     &amp;lt;rsb:set attr=&amp;quot;fedex.developerkey&amp;quot; value=&amp;quot;[fedex-developerkey]&amp;quot; /&amp;gt;
     &amp;lt;rsb:set attr=&amp;quot;fedex.trackingid&amp;quot; value=&amp;quot;[_request.form:trackingnumber]&amp;quot; /&amp;gt;
     &amp;lt;rsb:set attr=&amp;quot;fedex.trackingidtype&amp;quot; value=&amp;quot;TRACKINGNUMBERORDOORTAG&amp;quot; /&amp;gt;
     &amp;lt;rsb:set attr=&amp;quot;fedex.url&amp;quot; value=&amp;quot;https://gatewaybeta.fedex.com:443/xml&amp;quot; /&amp;gt;
     &amp;lt;rsb:set attr=&amp;quot;global.operation&amp;quot; value=&amp;quot;fedexTrack&amp;quot; /&amp;gt;
     &amp;lt;rsb:set attr=&amp;quot;global.input&amp;quot; value=&amp;quot;fedex&amp;quot; /&amp;gt;    
    &amp;lt;/rsb:case&amp;gt;    
  &amp;lt;/rsb:select&amp;gt;

  &amp;lt;rsb:call op=&amp;quot;[global.operation]&amp;quot; in=&amp;quot;[global.input]&amp;quot;&amp;gt;
   &amp;lt;rsb:first&amp;gt;
     &amp;lt;table width=&amp;quot;100%&amp;quot;&amp;gt;
       &amp;lt;tr&amp;gt;
        &amp;lt;th style=&amp;quot;background-color:LightGrey; white-space:nowrap&amp;quot;&amp;gt;Status&amp;lt;/th&amp;gt;                             
        &amp;lt;th style=&amp;quot;background-color:LightGrey; white-space:nowrap&amp;quot;&amp;gt;Date/Time&amp;lt;/th&amp;gt;                       
        &amp;lt;th style=&amp;quot;background-color:LightGrey; white-space:nowrap&amp;quot;&amp;gt;Location&amp;lt;/th&amp;gt;                           
      &amp;lt;/tr&amp;gt;
    &amp;lt;/rsb:first&amp;gt;
       &amp;lt;tr&amp;gt;
        &amp;lt;td&amp;gt;[scandesc]&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;[scandate] [scantime]&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;[scancity], [scanstate] [scancountry]&amp;lt;/td&amp;gt;
      &amp;lt;tr&amp;gt;
   &amp;lt;rsb:last&amp;gt;
     &amp;lt;/table&amp;gt;
   &amp;lt;/rsb:last&amp;gt;
 &amp;lt;/rsb:call&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/rsb:check&amp;gt;&lt;/pre&gt;&lt;/code&gt;
	
	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 4:&lt;/b&gt; Specify your account credentials.  If you clicked &quot;Apply&quot; in the source editor 
		of the Web Part, you should now see a new property appear in the properties editor of the Web Part in your
		browser.  Under &quot;Web Part Inputs&quot;, you&apos;ll see &quot;ups-accesskey&quot;, &quot;ups-accountnumber&quot;, and several other credential 
		inputs.  These inputs will need to be populated with the values corresponding to your web service account credentials 
		obtained from UPS, USPS, and/or FedEx.  If you&#65533;re not using one or more of these shipping companies, just insert a 
		dummy value or modify the template so that input is not required.&lt;/li&gt;
	&lt;/ul&gt;
	
	
	&lt;p&gt;
		After you have set these inputs appropriately, click &quot;Apply&quot; in the properties window and the page will reload.  
		Enter a tracking number, select the shipping company, and click &quot;Track&quot;.  The tracking events will be displayed 
		inside the web part!
	&lt;p&gt;
		As always, you can customize the HTML in the template, or leave it as is.
	&lt;/p&gt;</description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/webpart-shippingtracking.rst</guid>
<link>http://www.rssbus.com/kb/articles/webpart-shippingtracking.rst</link>
<pubDate>Wed, 13 Jan 2010 00:00:00 GMT</pubDate>
<title>A SharePoint Web Part for Shipment Tracking</title>
</item><item xmlns:x="http://www.rssbus.com/ns?RsbOps/v2/anonymous/">
<x:description>Easily include Twitter searches and streams inside their SharePoint pages.</x:description>
<x:keywords>Webpart, SharePoint, Twitter, Search, Calendar</x:keywords>
<description>
	&lt;p&gt;
		The following will guide you through including Twitter searches and streams inside SharePoint pages. With Twitter API and RSS feeds, the process is simplified.
        Also, by using a different RSS or Atom Feed to start from, you may change from showing searches, mentions, direct messages, or other Twitter streams.
		
	&lt;/p&gt;
	
	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 1:&lt;/b&gt; Ensure the RSSBus Web Part is installed. &lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 2:&lt;/b&gt; Find the RSS or Atom Feed URL for the Twitter stream you want to display.  
		For this example, Twitter search results are shown for the keywords &quot;SharePoint&quot; , &quot;PowerShell&quot;, 
		and &#65533;RSSBus&#65533; (this step can be skipped if you only want to see it work).
        When you are ready to try it with your own search or another Twitter stream, simply provide your URL.  
		If you are unsure how to get this RSS feed, see the instructions are below:
			&lt;ul&gt;
				&lt;li&gt;&lt;i&gt;Twitter Search&lt;/i&gt;: Visit search.twitter.com, perform your search, and look for the &quot;Feed for this query&quot; 
				icon on the top right of the page.&lt;/li&gt;
				&lt;li&gt;&lt;i&gt;Public Timeline&lt;/i&gt;:  Visit your profile and look for the &#65533;RSS feed of &lt;i&gt;user name&apos;s&lt;/i&gt; tweets&#65533; icon on 
				the right side of the page. &lt;/li&gt;
				&lt;li&gt;&lt;i&gt;Twitter Friends Timeline&lt;/i&gt;:  Visit your profile and look for the &quot;RSS feed&quot; icon on the bottom right of the page. &lt;/li&gt;
				&lt;li&gt;&lt;i&gt;Twitter Favorites&lt;/i&gt;: Visit your favorites page on Twitter and look for the &quot;RSS feed for favorites&quot; 
				icon on the bottom right of the page. &lt;/li&gt;
				&lt;li&gt;&lt;i&gt;Friends Timelines&lt;/i&gt;:  Visit your friend&#65533;s page and look for the &quot;RSS feed of &lt;i&gt;friend&apos;s name&lt;/i&gt; tweets&quot; icon on the 
				right side of the page. &lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;
				&lt;i&gt;Advanced Tip:&lt;/i&gt; Custom Twitter feeds can be made out of @replies, direct messages, or combined feeds 
				by using the TwitterOps Connector.  With the TwitterOps Connector, you have complete control enabling you to send 
				direct messages, send replies, get following and follower lists, or combine two or more of the previous options into one feed.  
				The easiest way to test TwitterOps before importing it into an actual Web Part is by using the RSSBus Server Admin Console.
			&lt;/p&gt;
		&lt;/li&gt;
        &lt;li&gt;&lt;b&gt;Step 3:&lt;/b&gt; Add the RSSBus WebPart to your page and paste the following template into its source editor. Next, click &quot;Apply&quot;.  
			The Web Part will be rendered with the results of the Twitter search results for SharePoint, PowerShell, and RSSBus.&lt;/li&gt;
	&lt;/ul&gt;
	
&lt;code lang=xml&gt;&lt;pre&gt;&amp;lt;rsb:info title=&amp;quot;Twitter Search&amp;quot; &amp;gt;
  &amp;lt;input name=&amp;quot;SearchPhrase&amp;quot; description=&amp;quot;The search phrase to use.&amp;quot; def=&amp;quot;SharePoint OR PowerShell OR RSSBus&amp;quot;/&amp;gt;
&amp;lt;/rsb:info&amp;gt;

&amp;lt;div style=&amp;quot;height:60em;width:100%;overflow:auto;padding:10px&amp;quot;&amp;gt;
  &amp;lt;rsb:call op=&amp;quot;http://search.twitter.com/search.rss?q=[SearchPhrase]&amp;quot; pagesize=&amp;quot;10&amp;quot;&amp;gt;
    &amp;lt;div style=&amp;quot;float:left;background-color:whiteSmoke;margin-bottom:20px&amp;quot;&amp;gt;
      &amp;lt;div style=&amp;quot;float:left;width:40px;margin-bottom:5px&amp;quot;&amp;gt;
        &amp;lt;a href=&amp;quot;[rss:link]&amp;quot;&amp;gt;&amp;lt;img align=&amp;quot;left&amp;quot; src=&amp;quot;[google:image_link]&amp;quot; border=&amp;quot;0&amp;quot; width=&amp;quot;33px&amp;quot;/&amp;gt;&amp;lt;/a&amp;gt;
      &amp;lt;/div&amp;gt;
      &amp;lt;div&amp;gt;&amp;lt;a href=&amp;quot;[rss:link]&amp;quot;&amp;gt;[rss:author]&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;
      &amp;lt;div style=&amp;quot;color:gray&amp;quot;&amp;gt;[rss:pubDate]&amp;lt;/div&amp;gt;
      &amp;lt;div style=&amp;quot;float:left;width:100%&amp;quot;&amp;gt;[rss:description]&amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
  &amp;lt;/rsb:call&amp;gt;
 &amp;lt;/div&amp;gt;&lt;/pre&gt;&lt;/code&gt;
	
	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 4:&lt;/b&gt; Customize the template for your specific needs.  If you clicked &quot;Apply&quot; in the 
		source editor of the Web Part, a new property appeared in the properties editor of the 
		Web Part in your browser.  Under &quot;Web Part Inputs&quot;, you will find a new &quot;SearchPhrase&quot; input.  Put 
		your own search criteria here. Optionally, if you want to only show a stream such as your 
		friend&apos;s timeline, replace the following line: &lt;/li&gt;
&lt;code&gt;&lt;pre&gt;&amp;lt;rsb:call op=&amp;quot;http://search.twitter.com/search.rss?q=[SearchPhrase]&amp;quot; pagesize=&amp;quot;10&amp;quot;&amp;gt;&lt;/pre&gt;&lt;/code&gt;
		&lt;p&gt;with this: &lt;/p&gt;
&lt;code&gt;&lt;pre&gt;&amp;lt;rsb:call op=&amp;quot;ENTER_YOUR_URL_HERE&amp;quot; pagesize=&amp;quot;10&amp;quot;&amp;gt;&lt;/pre&gt;&lt;/code&gt;
		
	&lt;/ul&gt;
&lt;p&gt;Note the pagesize=&quot;10&quot;.  This tells the Web Part to only show 10 of the items in the feed.  This option is customizable and can be removed to list all feeds.
&lt;/p&gt;</description>
<guid isPermaLink="false">http://www.rssbus.com/kb/articles/webpart-twittersearch.rst</guid>
<link>http://www.rssbus.com/kb/articles/webpart-twittersearch.rst</link>
<pubDate>Wed, 13 Jan 2010 00:00:00 GMT</pubDate>
<title>Twitter Search Web Part</title>
</item></channel>
</rss>

