<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Abilitics Blog</title>
    <link>http://blogs.abilitics.com/</link>
    <description />
    <language>en-us</language>
    <copyright>Rossen Zhivkov</copyright>
    <lastBuildDate>Fri, 03 Apr 2009 20:14:43 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.0.7226.0</generator>
    <managingEditor>rzhivkov@gmail.com</managingEditor>
    <webMaster>rzhivkov@gmail.com</webMaster>
    <item>
      <trackback:ping>http://blogs.abilitics.com/Trackback.aspx?guid=c1ed6ed0-c5af-47f2-b727-9f0c94753558</trackback:ping>
      <pingback:server>http://blogs.abilitics.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.abilitics.com/PermaLink,guid,c1ed6ed0-c5af-47f2-b727-9f0c94753558.aspx</pingback:target>
      <dc:creator>Rossen Zhivkov</dc:creator>
      <wfw:comment>http://blogs.abilitics.com/CommentView,guid,c1ed6ed0-c5af-47f2-b727-9f0c94753558.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.abilitics.com/SyndicationService.asmx/GetEntryCommentsRss?guid=c1ed6ed0-c5af-47f2-b727-9f0c94753558</wfw:commentRss>
      <title>Abilitics first presentation movie</title>
      <guid isPermaLink="false">http://blogs.abilitics.com/PermaLink,guid,c1ed6ed0-c5af-47f2-b727-9f0c94753558.aspx</guid>
      <link>http://blogs.abilitics.com/2009/04/03/AbiliticsFirstPresentationMovie.aspx</link>
      <pubDate>Fri, 03 Apr 2009 20:14:43 GMT</pubDate>
      <description>&lt;p&gt;
Abilitics has its first&amp;nbsp;short 1.30 min corporate movie presentation, which we
will use on Microsoft Days 2009! You can watch it here.
&lt;/p&gt;
&lt;p&gt;
&lt;object height=344 width=425&gt;
&lt;param name="movie" value="http://www.youtube.com/v/YKQk98sVpuY&amp;amp;hl=en&amp;amp;fs=1"&gt;
&lt;param name="allowFullScreen" value="true"&gt;
&lt;param name="allowscriptaccess" value="always"&gt;
&lt;embed src="http://www.youtube.com/v/YKQk98sVpuY&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;a href="http://www.youtube.com/watch?v=YKQk98sVpuY"&gt;&lt;font face=Calibri size=3&gt;http://www.youtube.com/watch?v=YKQk98sVpuY&lt;/font&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Great thanks to Vassilen Iotzov, who created the movie for us. Anyone who wants to
use his services, contact me and I will gladly connect you to Vassilen.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
Sincerely,&lt;br&gt;
Rossen Zhivkov
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.abilitics.com/aggbug.ashx?id=c1ed6ed0-c5af-47f2-b727-9f0c94753558" /&gt;</description>
      <comments>http://blogs.abilitics.com/CommentView,guid,c1ed6ed0-c5af-47f2-b727-9f0c94753558.aspx</comments>
      <category>Events</category>
    </item>
    <item>
      <trackback:ping>http://blogs.abilitics.com/Trackback.aspx?guid=38c15f5a-f88d-4766-bd80-c46a46dff13b</trackback:ping>
      <pingback:server>http://blogs.abilitics.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.abilitics.com/PermaLink,guid,38c15f5a-f88d-4766-bd80-c46a46dff13b.aspx</pingback:target>
      <dc:creator>Rossen Zhivkov</dc:creator>
      <wfw:comment>http://blogs.abilitics.com/CommentView,guid,38c15f5a-f88d-4766-bd80-c46a46dff13b.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.abilitics.com/SyndicationService.asmx/GetEntryCommentsRss?guid=38c15f5a-f88d-4766-bd80-c46a46dff13b</wfw:commentRss>
      <title>SharePoint high-availability with SQL Server 2008 Database Mirroring</title>
      <guid isPermaLink="false">http://blogs.abilitics.com/PermaLink,guid,38c15f5a-f88d-4766-bd80-c46a46dff13b.aspx</guid>
      <link>http://blogs.abilitics.com/2008/11/17/SharePointHighavailabilityWithSQLServer2008DatabaseMirroring.aspx</link>
      <pubDate>Mon, 17 Nov 2008 21:32:14 GMT</pubDate>
      <description>&lt;p&gt;
&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Tahoma; mso-ansi-language: EN; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;A
week ago we completed the &lt;b style="mso-bidi-font-weight: normal"&gt;migration&lt;/b&gt; of
SharePoint implementation to new infrastructure for a client of ours. The non-functional
requirements included high-availability which we met with SQL Server 2008 Database
Mirroring. Below are some of the architecture decisions from this project. &lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="/content/binary/mirror0.png" border=0&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: Tahoma; mso-ansi-language: EN"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;Fig
1: Content DB is running as principal on SQL2 and mirror on SQL1, while all the others
are running as principal SQL1, and mirror on SQL2.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: Tahoma; mso-ansi-language: EN"&gt;Asynchronous
vs. Synchronous database mirroring&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt; tab-stops: 69.9pt"&gt;
&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: Tahoma; mso-ansi-language: EN"&gt;With &lt;b style="mso-bidi-font-weight: normal"&gt;asynchronous&lt;/b&gt; mirroring
(high-performance mode), the transaction is completed on principal server before it
is applied on mirrored server. This means that if fail down occurs, there is possibility
of data loss.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt; tab-stops: 69.9pt"&gt;
&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: Tahoma; mso-ansi-language: EN"&gt;With &lt;b style="mso-bidi-font-weight: normal"&gt;synchronous&lt;/b&gt; mirroring,
transaction on the principal is committed after it has been completed on the mirror
server, thus causing a performance delays. Synchronous mirroring requires a high-performance
network infrastructure with low latency. 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: Tahoma; mso-ansi-language: EN"&gt;Note
that asynchronous is available only in &lt;b style="mso-bidi-font-weight: normal"&gt;Enterprise
version&lt;/b&gt; of SQL Server.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: Tahoma; mso-ansi-language: EN"&gt;Using
SQL Aliases&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: Tahoma; mso-ansi-language: EN"&gt;SharePoint
is sensitive (meaning lots of stsadm work required) to changing the database server
for Configuration database. Using &lt;b style="mso-bidi-font-weight: normal"&gt;SQL aliases&lt;/b&gt;,
you can trick SharePoint to “think” that it is connecting to the same principal database,
while in reality it is using the mirrored database (when principal is down).&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: Tahoma; mso-ansi-language: EN"&gt;You
shall be setting SQL aliases on &lt;b style="mso-bidi-font-weight: normal"&gt;front end
servers,&lt;/b&gt; where you don’t have SQL Server installed. Then, you shall use SQL Client
Configuration utility &lt;b style="mso-bidi-font-weight: normal"&gt;cliconfig&lt;/b&gt;, located
here: C:\Windows\System32\cliconfg.exe.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: Tahoma; mso-ansi-language: EN"&gt;Here
is the location to the key that this tool sets. This key can be directly modified
in &lt;b style="mso-bidi-font-weight: normal"&gt;registry&lt;/b&gt; to change the alias. 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Tahoma; mso-ansi-language: EN; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo]&lt;br&gt;
SQL -&amp;gt; DBMSSOCN, SQL1&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="/content/binary/mirrorr1.png" border=0&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: Tahoma; mso-ansi-language: EN"&gt;“Active-active”
Database mirroring&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: Tahoma; mso-ansi-language: EN"&gt;By
definition, Database mirroring implies that one server is the principal, and the other
is the mirror. With this configuration, each of the servers is running as &lt;b style="mso-bidi-font-weight: normal"&gt;principal&lt;/b&gt; for
some of the databases, and &lt;b style="mso-bidi-font-weight: normal"&gt;mirror&lt;/b&gt; for
the others, and vice versa. 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: Tahoma; mso-ansi-language: EN"&gt;The
purpose is to &lt;b style="mso-bidi-font-weight: normal"&gt;distribute the load&lt;/b&gt; between
the two servers and to utilize the memory of both of the servers. If you have read
operation, than only the principal server of the database will register &lt;b style="mso-bidi-font-weight: normal"&gt;disk
IO&lt;/b&gt;. Of course, if you have write operation, than both the principal and the mirror
will carry out the operation.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: Tahoma; mso-ansi-language: EN"&gt;Also,
with SharePoint, you can put &lt;b style="mso-bidi-font-weight: normal"&gt;site collections&lt;/b&gt; in
separate content databases. That means that you can have half of the site collections
running on SQL 1 as principal, and half of them running on SQL 2 as principal.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: Tahoma; mso-ansi-language: EN"&gt;Note
that if you use “active-active” type of DB Mirroring, you will have to &lt;b style="mso-bidi-font-weight: normal"&gt;license&lt;/b&gt; the
both of the SQL Servers. If one server is acting as only mirror instance, then you
will have to have license only one SQL Server – the principal server. 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: Tahoma; mso-ansi-language: EN"&gt;Manual
vs. Automatic Failover&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: Tahoma; mso-ansi-language: EN"&gt;With &lt;b style="mso-bidi-font-weight: normal"&gt;manual&lt;/b&gt; failover
you will have to run the following scripts:&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpFirst style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;
&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana; mso-ansi-language: EN"&gt;&lt;span style="mso-list: Ignore"&gt;-&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: Tahoma; mso-ansi-language: EN"&gt;T-SQL
Script&lt;/span&gt;&lt;/b&gt;&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: Tahoma; mso-ansi-language: EN"&gt; on
the active server to force manual failover on the mirror server (with data loss if
you use asynchronous mirroring)&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpLast style="MARGIN: 0in 0in 10pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;
&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana; mso-ansi-language: EN"&gt;&lt;span style="mso-list: Ignore"&gt;-&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: Tahoma; mso-ansi-language: EN"&gt;Registry
update script&lt;/span&gt;&lt;/b&gt;&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: Tahoma; mso-ansi-language: EN"&gt; on
each of the front-end servers to update the SQL Aliases. Also, you can use remote
registry in order to run the script remotely on each of the servers in the farm.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: Tahoma; mso-ansi-language: EN"&gt;SharePoint
with does not support truly &lt;b style="mso-bidi-font-weight: normal"&gt;automatic&lt;/b&gt; failover.
However, what you can do is you can use&amp;nbsp;a specific event that is triggered when&amp;nbsp;DB
mirroring failver has occured. The event will initiate a SQL server job, which in
turn will update the SQL aliases.&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: Tahoma; mso-ansi-language: EN"&gt;Once
the other server is up and running, you will have to revert the databases to their,
and update the SQL aliases as well. 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: Tahoma; mso-ansi-language: EN"&gt;Our
implementation:&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Tahoma; mso-ansi-language: EN; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;We
implemented asynchronous active-active mirroring, with fully-scripted manual failover
without witness server.&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Tahoma; mso-ansi-language: EN; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;Sincerely,&lt;br&gt;
Rossen Zhivkov&lt;/span&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.abilitics.com/aggbug.ashx?id=38c15f5a-f88d-4766-bd80-c46a46dff13b" /&gt;</description>
      <comments>http://blogs.abilitics.com/CommentView,guid,38c15f5a-f88d-4766-bd80-c46a46dff13b.aspx</comments>
      <category>SharePoint</category>
    </item>
    <item>
      <trackback:ping>http://blogs.abilitics.com/Trackback.aspx?guid=bbf2fe68-31b5-4c9d-87f0-3213802b4f29</trackback:ping>
      <pingback:server>http://blogs.abilitics.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.abilitics.com/PermaLink,guid,bbf2fe68-31b5-4c9d-87f0-3213802b4f29.aspx</pingback:target>
      <dc:creator>Rossen Zhivkov</dc:creator>
      <wfw:comment>http://blogs.abilitics.com/CommentView,guid,bbf2fe68-31b5-4c9d-87f0-3213802b4f29.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.abilitics.com/SyndicationService.asmx/GetEntryCommentsRss?guid=bbf2fe68-31b5-4c9d-87f0-3213802b4f29</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <strong>
            <font size="3">The scenario: </font>
          </strong>
        </p>
        <p>
One of our current projects required that we had to create a SharePoint list item
(task) when specific condition occurs in CRM - "Responsible person" is selected on
opportunity level. 
</p>
        <p>
          <strong>
            <font size="3">The solution:</font>
          </strong>
        </p>
        <p>
          <strong>1. Create web service on SharePoint Server</strong>
        </p>
        <p>
Often, you will have you SharePoint infrastructure reside on different server than
CRM. Then, you cannot access the object model directly so you need to create a web
serivice. Decide also on service authentication.
</p>
        <p>
In our case - the web service creates an list item (task) in SharePoint, and fills
it with the necessary properties.<br /><br /><strong>2. Create custom workflow activity<br /><br /></strong><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"><font face="Verdana" size="2">2.1.
Create sharepoint workflow activity library. Add CRM assemblies (from CRM SDK). Annotate
class with appropriate attributes.</font></span></p>
        <pre>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">[CrmWorkflowActivity(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"Crm
Workflow Activity"</span>, <span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"SharePoint
Activity"</span>)] <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span> partial <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">class</span> SharePointActivity:
SequenceActivity { <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   public</span> SharePointActivity()
   {       InitializeComponent();    }
}</span>
        </pre>
        <p>
2.2. Register dependency properties, which will then be fed from CRM 
</p>
        <pre>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span>
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">static</span> DependencyProperty
responsiblePersonProperty <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=<br /></span>   DependencyProperty.Register(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"responsiblePerson"</span>, <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">typeof</span>(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span>), <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">typeof</span>(SharePointActivity));
[CrmInput(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"responsiblePerson"</span>)]
[CrmDefault(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">@""</span>)] <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> responsiblePerson
{    get    { <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">      return</span> (<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span>)<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">base</span>.GetValue(responsiblePersonProperty);
   }    set    { <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">      base</span>.SetValue(responsiblePersonProperty,
value);    }<br />
}</span>
        </pre>
        <p>
2.3. Call the SharePoint web service. For simplicity - no error handling &amp; no
security calling the service.
</p>
        <pre>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">protected</span>
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">override</span> ActivityExecutionStatus
Execute(ActivityExecutionContext executionContext) {    SamsService
sams <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> SamsService();
   sams.CreateTask(responsiblePerson); <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   return</span> ActivityExecutionStatus.Closed;
}</span>
        </pre>
        <p>
          <strong>3. Register the custom workflow activity in CRM and enable debugging</strong>
        </p>
        <p>
Registration is pretty straighforward with tools in CRM SDK (plugin registration).
CRM workflows are run "assyncronously" by CRM Assyncronours Service - this means that
in order to debug your custom workflow activites, you need to attach to this service,
not to w3wp. Also,  your code is run with service's credentials  (network
service by default), so you might experience security issues. 
</p>
        <p>
Remember also iisreset &amp; restart assync service on every change<br /></p>
        <p>
          <strong>4. Create CRM workflow that uses the custom activity</strong>
        </p>
        <p>
The workflow is started automatically when opportunity is created. The workflow waits
untill "Reponsible person" is not blank. Then the workllow executes our custom workflow
activity for SharePoint integration, passing all the required properties. 
</p>
        <p>
          <img src="/content/binary/png1.png" width="630" border="0" />
        </p>
        <p>
          <br />
You can pass data from opportunity level, or any related entites such as Primary Contact
or Account to every custom activity's dependency property that has been marked
with the CrmInput attribute.
</p>
        <p>
          <img src="/content/binary/png2.png" width="630" border="0" />
        </p>
        <p>
Sincerely,<br />
Rossen
</p>
        <img width="0" height="0" src="http://blogs.abilitics.com/aggbug.ashx?id=bbf2fe68-31b5-4c9d-87f0-3213802b4f29" />
      </body>
      <title>Integrating CRM 4.0 and SharePoint with Workflows</title>
      <guid isPermaLink="false">http://blogs.abilitics.com/PermaLink,guid,bbf2fe68-31b5-4c9d-87f0-3213802b4f29.aspx</guid>
      <link>http://blogs.abilitics.com/2008/11/12/IntegratingCRM40AndSharePointWithWorkflows.aspx</link>
      <pubDate>Wed, 12 Nov 2008 21:41:43 GMT</pubDate>
      <description>&lt;p&gt;
&lt;strong&gt;&lt;font size=3&gt;The scenario: &lt;/font&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
One of our current projects required that we had to create a SharePoint list item
(task) when specific condition occurs in CRM - "Responsible person" is selected on
opportunity level. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font size=3&gt;The solution:&lt;/font&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;1. Create web service on SharePoint Server&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Often, you will have you SharePoint infrastructure reside on different server than
CRM. Then, you cannot access the object model directly so you need to create a web
serivice. Decide also on service authentication.
&lt;/p&gt;
&lt;p&gt;
In our case - the web service creates an list item (task) in SharePoint, and fills
it with the necessary properties.&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;2. Create custom workflow activity&lt;br&gt;
&lt;br&gt;
&lt;/strong&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face=Verdana size=2&gt;2.1.
Create sharepoint workflow activity library. Add CRM assemblies (from CRM SDK). Annotate
class with appropriate attributes.&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;pre&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;[CrmWorkflowActivity(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"Crm
Workflow Activity"&lt;/span&gt;, &lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"SharePoint
Activity"&lt;/span&gt;)] &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; partial &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;class&lt;/span&gt; SharePointActivity:
SequenceActivity { &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&lt;/span&gt; SharePointActivity()
&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;InitializeComponent(); &amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
2.2. Register dependency properties, which will then be fed from CRM 
&lt;/p&gt;
&lt;pre&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;static&lt;/span&gt; DependencyProperty
responsiblePersonProperty &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;br&gt;
&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DependencyProperty.Register(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"responsiblePerson"&lt;/span&gt;, &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;typeof&lt;/span&gt;(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt;), &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;typeof&lt;/span&gt;(SharePointActivity));
[CrmInput(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"responsiblePerson"&lt;/span&gt;)]
[CrmDefault(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;@""&lt;/span&gt;)] &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; responsiblePerson
{ &amp;nbsp;&amp;nbsp;&amp;nbsp;get &amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&lt;/span&gt; (&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt;)&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;base&lt;/span&gt;.GetValue(responsiblePersonProperty);
&amp;nbsp;&amp;nbsp;&amp;nbsp;} &amp;nbsp;&amp;nbsp;&amp;nbsp;set &amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;base&lt;/span&gt;.SetValue(responsiblePersonProperty,
value); &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
}&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
2.3. Call the SharePoint web service. For simplicity - no error handling &amp;amp; no
security calling the service.
&lt;/p&gt;
&lt;pre&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;protected&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;override&lt;/span&gt; ActivityExecutionStatus
Execute(ActivityExecutionContext executionContext) { &amp;nbsp;&amp;nbsp;&amp;nbsp;SamsService
sams &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; SamsService();
&amp;nbsp;&amp;nbsp;&amp;nbsp;sams.CreateTask(responsiblePerson); &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&lt;/span&gt; ActivityExecutionStatus.Closed;
}&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;strong&gt;3. Register the custom workflow activity in CRM and enable debugging&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Registration is pretty straighforward with tools in CRM SDK (plugin registration).
CRM workflows are run "assyncronously" by CRM Assyncronours Service - this means that
in order to debug your custom workflow activites, you need to attach to this service,
not to w3wp. Also,&amp;nbsp; your code is run with service's credentials&amp;nbsp; (network
service by default), so you might experience security issues. 
&lt;/p&gt;
&lt;p&gt;
Remember also iisreset &amp;amp; restart assync service on every change&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;4. Create CRM workflow that uses the custom activity&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The workflow is started automatically when opportunity is created. The workflow waits
untill "Reponsible person" is not blank. Then the workllow executes our custom workflow
activity for SharePoint integration, passing all the required properties. 
&lt;/p&gt;
&lt;p&gt;
&lt;img src="/content/binary/png1.png" width=630 border=0&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
You can pass data from opportunity level, or any related entites such as Primary Contact
or Account to every&amp;nbsp;custom activity's dependency property that has been marked
with the CrmInput attribute.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="/content/binary/png2.png" width=630 border=0&gt;
&lt;/p&gt;
&lt;p&gt;
Sincerely,&lt;br&gt;
Rossen
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.abilitics.com/aggbug.ashx?id=bbf2fe68-31b5-4c9d-87f0-3213802b4f29" /&gt;</description>
      <comments>http://blogs.abilitics.com/CommentView,guid,bbf2fe68-31b5-4c9d-87f0-3213802b4f29.aspx</comments>
      <category>CRM</category>
      <category>SharePoint</category>
    </item>
    <item>
      <trackback:ping>http://blogs.abilitics.com/Trackback.aspx?guid=6410fdf3-178b-4c89-99f8-d9a11ca9a615</trackback:ping>
      <pingback:server>http://blogs.abilitics.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.abilitics.com/PermaLink,guid,6410fdf3-178b-4c89-99f8-d9a11ca9a615.aspx</pingback:target>
      <dc:creator>Rossen Zhivkov</dc:creator>
      <wfw:comment>http://blogs.abilitics.com/CommentView,guid,6410fdf3-178b-4c89-99f8-d9a11ca9a615.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.abilitics.com/SyndicationService.asmx/GetEntryCommentsRss?guid=6410fdf3-178b-4c89-99f8-d9a11ca9a615</wfw:commentRss>
      <title>The new site of Bulgarian SQL &amp; BI User Group</title>
      <guid isPermaLink="false">http://blogs.abilitics.com/PermaLink,guid,6410fdf3-178b-4c89-99f8-d9a11ca9a615.aspx</guid>
      <link>http://blogs.abilitics.com/2008/11/02/TheNewSiteOfBulgarianSQLBIUserGroup.aspx</link>
      <pubDate>Sun, 02 Nov 2008 22:21:17 GMT</pubDate>
      <description>&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: Tahoma; mso-ansi-language: EN"&gt;
&lt;br&gt;
Today we launched the new site of the Bulgarian SQL &amp; BI user group, available at
address &lt;a href="http://bgsqlgroup.com/"&gt;&lt;span style="COLOR: #585858; TEXT-DECORATION: none; text-underline: none"&gt;http://bgsqlgroup.com/&lt;/span&gt;&lt;/a&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;.
Great thanks to Lubo, who has driven the development efforts and Teddy, the one responsible
for design and information infrastructure. 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: Tahoma; mso-ansi-language: EN"&gt;Here
I will give some insight in how we have built it.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: Tahoma; mso-ansi-language: EN"&gt;&lt;strong&gt;SharePoint
Services&lt;o:p&gt;&lt;/o:p&gt;
&lt;/strong&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Tahoma; mso-ansi-language: EN; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;The
site is built in SharePoint services, users are authenticated using Forms Authentication,
also with the Bulgarian language pack&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;br&gt;
&lt;img src="/content/binary/png11.png" border=0&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: Tahoma; mso-ansi-language: EN"&gt;Business
and Technical sections&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal"&gt;
&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: Tahoma; mso-ansi-language: EN"&gt;The
technical section contains technical documents, useful SQL tools, technical news and
links to sites.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal"&gt;
&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: Tahoma; mso-ansi-language: EN"&gt;The
business section has document libraries for business documents and presentations,
business news and links. Additionally, members can upload case studies, which are
published after approval.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal"&gt;
&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: Tahoma; mso-ansi-language: EN"&gt;Protected
documents upload&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal"&gt;
&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: Tahoma; mso-ansi-language: EN"&gt;Workflow
is run in the background to give contribute permissions to the person who uploads
the document, and read-only permissions to everyone else.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;img src="/content/binary/png21.png" border=0&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;font color=#000000&gt;&lt;font face=Verdana color=#003300&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: Tahoma; mso-ansi-language: EN"&gt;&lt;strong&gt;User
Profiles&lt;o:p&gt;&lt;/o:p&gt;
&lt;/strong&gt;&lt;/span&gt; 
&lt;p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: Tahoma; mso-ansi-language: EN"&gt;Users
are registered in aspnet membership database – storing the basic user registration
information - username, email and password.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN style="FONT-SIZE: 8.5pt; COLOR: #585858; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: Tahoma; mso-ansi-language: EN"&gt;User
profile is stored in SharePoint list. User profile pictures are stored in separate
picture library. The user profile edit form is changed to custom list form to incorporate
additional user control for uploading user profile pictures. 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;img src="/content/binary/pic3.png" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;The Forum&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The forum is built using the open-source Yet Another .NET Forum. Authentication of
both forum and sharepoint are done against the same ASP.NET Membership database, thus
achieving single-sign on between the two applications.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="/content/binary/png4.png" border=0&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
Sincerely,&lt;br&gt;
Rossen Zhivkov
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.abilitics.com/aggbug.ashx?id=6410fdf3-178b-4c89-99f8-d9a11ca9a615" /&gt;</description>
      <comments>http://blogs.abilitics.com/CommentView,guid,6410fdf3-178b-4c89-99f8-d9a11ca9a615.aspx</comments>
      <category>Community</category>
      <category>General</category>
    </item>
    <item>
      <trackback:ping>http://blogs.abilitics.com/Trackback.aspx?guid=a44f655c-8a40-4705-bc70-c6776d45b1f7</trackback:ping>
      <pingback:server>http://blogs.abilitics.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.abilitics.com/PermaLink,guid,a44f655c-8a40-4705-bc70-c6776d45b1f7.aspx</pingback:target>
      <dc:creator>Rossen Zhivkov</dc:creator>
      <wfw:comment>http://blogs.abilitics.com/CommentView,guid,a44f655c-8a40-4705-bc70-c6776d45b1f7.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.abilitics.com/SyndicationService.asmx/GetEntryCommentsRss?guid=a44f655c-8a40-4705-bc70-c6776d45b1f7</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
This year Krasimir and I have delivered two presentations about SQL Server, here I
provide some information and download links of the presentations. Krasimir Parushev
is a fellow ex-colleague of mine, expert in SQL Server and Business Intelligence and
a good friend.
</p>
        <p>
          <strong>1.Distributed and long running transactions (Jan 19, 2008)</strong>
        </p>
        <p>
Rossen and Krasimir will guide you through the advanced concepts of transactions –
distributed transactions, 2 phase-commit protocol, transaction coordinators and resource
managers, the concepts of long running transactions and WS-* specifications, and implementation
in WCF, WF and support of distributed transactions via System.Transaction namespace
in .NET 2.0.<br /><br />
Download the presentation:<br /><a href="http://www.abilitics.com/downloads/Abilitics_NASD_Distibututed_Transactions_Rossen_Krasi_2008.01.16.ppt">http://www.abilitics.com/downloads/Abilitics_NASD_Distibututed_Transactions_Rossen_Krasi_2008.01.16.ppt</a></p>
        <p>
Event:<br /><a href="http://www.devbg.org/seminars/seminar-database-transactions-19-January-2008/">http://www.devbg.org/seminars/seminar-database-transactions-19-January-2008/</a></p>
        <p>
NASD (National Academy of Software Developers) is non-commercial organization which
supports Bulgarian software community with educational initiatives, courses and seminars.
</p>
        <p>
          <strong>2. SQL Server Integration Services – Best Practices (Apr 17, 2008)</strong>
        </p>
        <p>
Rossen and Krasimir will share some best practices in working with Integration Services
– Data cleaning, Data Transformation, Data profiling, Deployment  and configuration
practices, Logging, Security, Custom code and high availability.
</p>
        <p>
Download the presentation:<br /><a href="http://www.abilitics.com/downloads/Abilitics_BGSQLGROUP_SQLServerIntegrationServices_Rossen_Krasi_2008.04.17.pptx">http://www.abilitics.com/downloads/Abilitics_BGSQLGROUP_SQLServerIntegrationServices_Rossen_Krasi_2008.04.17.pptx</a></p>
        <p>
Event:<br /><a href="http://www.bgsqlgroup.com">http://www.bgsqlgroup.com</a><br />
Bulgarian SQL &amp; BI User group is the Bulgarian community of SQL Server experts
who share their experience and best practices in working with SQL Server.
</p>
        <p>
Sincerely,<br />
Rossen Zhivkov<br /><br /></p>
        <img width="0" height="0" src="http://blogs.abilitics.com/aggbug.ashx?id=a44f655c-8a40-4705-bc70-c6776d45b1f7" />
      </body>
      <title>Two SQL Server presentations</title>
      <guid isPermaLink="false">http://blogs.abilitics.com/PermaLink,guid,a44f655c-8a40-4705-bc70-c6776d45b1f7.aspx</guid>
      <link>http://blogs.abilitics.com/2008/10/03/TwoSQLServerPresentations.aspx</link>
      <pubDate>Fri, 03 Oct 2008 19:46:28 GMT</pubDate>
      <description>&lt;p&gt;
This year Krasimir and I have delivered two presentations about SQL Server, here I
provide some information and download links of the presentations. Krasimir Parushev
is a fellow ex-colleague of mine, expert in SQL Server and Business Intelligence and
a good friend.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;1.Distributed and long running transactions (Jan 19, 2008)&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Rossen and Krasimir will guide you through the advanced concepts of transactions –
distributed transactions, 2 phase-commit protocol, transaction coordinators and resource
managers, the concepts of long running transactions and WS-* specifications, and implementation
in WCF, WF and support of distributed transactions via System.Transaction namespace
in .NET 2.0.&lt;br&gt;
&lt;br&gt;
Download the presentation:&lt;br&gt;
&lt;a href="http://www.abilitics.com/downloads/Abilitics_NASD_Distibututed_Transactions_Rossen_Krasi_2008.01.16.ppt"&gt;http://www.abilitics.com/downloads/Abilitics_NASD_Distibututed_Transactions_Rossen_Krasi_2008.01.16.ppt&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Event:&lt;br&gt;
&lt;a href="http://www.devbg.org/seminars/seminar-database-transactions-19-January-2008/"&gt;http://www.devbg.org/seminars/seminar-database-transactions-19-January-2008/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
NASD (National Academy of Software Developers) is non-commercial organization which
supports Bulgarian software community with educational initiatives, courses and seminars.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;2. SQL Server Integration Services – Best Practices (Apr 17, 2008)&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Rossen and Krasimir will share some best practices in working with Integration Services
– Data cleaning, Data Transformation, Data profiling, Deployment&amp;nbsp; and configuration
practices, Logging, Security, Custom code and high availability.
&lt;/p&gt;
&lt;p&gt;
Download the presentation:&lt;br&gt;
&lt;a href="http://www.abilitics.com/downloads/Abilitics_BGSQLGROUP_SQLServerIntegrationServices_Rossen_Krasi_2008.04.17.pptx"&gt;http://www.abilitics.com/downloads/Abilitics_BGSQLGROUP_SQLServerIntegrationServices_Rossen_Krasi_2008.04.17.pptx&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Event:&lt;br&gt;
&lt;a href="http://www.bgsqlgroup.com"&gt;http://www.bgsqlgroup.com&lt;/a&gt;
&lt;br&gt;
Bulgarian SQL &amp;amp; BI User group is the Bulgarian community of SQL Server experts
who share their experience and best practices in working with SQL Server.
&lt;/p&gt;
&lt;p&gt;
Sincerely,&lt;br&gt;
Rossen Zhivkov&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.abilitics.com/aggbug.ashx?id=a44f655c-8a40-4705-bc70-c6776d45b1f7" /&gt;</description>
      <comments>http://blogs.abilitics.com/CommentView,guid,a44f655c-8a40-4705-bc70-c6776d45b1f7.aspx</comments>
      <category>Events</category>
      <category>SQL Server</category>
    </item>
    <item>
      <trackback:ping>http://blogs.abilitics.com/Trackback.aspx?guid=1e05219e-a84a-45ce-ba18-110dcfa085c0</trackback:ping>
      <pingback:server>http://blogs.abilitics.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.abilitics.com/PermaLink,guid,1e05219e-a84a-45ce-ba18-110dcfa085c0.aspx</pingback:target>
      <dc:creator>Rossen Zhivkov</dc:creator>
      <wfw:comment>http://blogs.abilitics.com/CommentView,guid,1e05219e-a84a-45ce-ba18-110dcfa085c0.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.abilitics.com/SyndicationService.asmx/GetEntryCommentsRss?guid=1e05219e-a84a-45ce-ba18-110dcfa085c0</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <p>
Recently, Teddy and I started an internal training preparation for MCTs (Microsoft
Certified Trainers) at Abilitics. So far, the guys are doing great! Here is a quick
list of some of the tips:
</p>
        <p>
          <strong>1. Feel Positive<br /></strong>You can’t fake it. You can’t pretend to be positive. It is much easier to
actually feel positive and to actually like your audience. Then you will react positively
at everything that happens in the course. The more your react positively, the more
the students react positively and the better the course goes. 
<br /><br /><strong>2. Deal with Anxiety &amp; Nervousness!<br /></strong>Remember that the training is not about you. It is not about you showing
how much you know, it not about your performance or your presentation skills. 
<br />
It is about the audience. It is about how you can help them. What they will have learned
at the end of the course. Keep in your mind that they deserve best training possible. 
<br />
On another note – every trainer feels anxiety, even the most experienced ones. But
only masters enjoy it and use it as their advantage (as transforming it in enthusiasm)! 
<br /><br /><strong>3. Credibility<br /></strong>Know your stuff. If you are good, it will show out. If you are not, it will
show. 
<br />
Do use examples from projects that you have completed. Do give them real-life experience.
That is how you will prove your credibility. 
<br />
Don’t cite your certificates, experience, and your company profile, how great you
are and how you know everything.<br /><br /><strong>4. Have enthusiasm<br /></strong>Be enthusiastic about the technology or the subject matter that you are teaching.
After all, if you, the expert, don’t seem to like the technology, why they should
care about learning it? They shall feel that there is something wonderful that you
going to teach them. 
<br /><br /><strong>5. Make them your friends 
<br /></strong>Just act friendly. Smile! Laugh! Relax the atmosphere. Don't serve
as authority. And don’t take the course too seriously.
</p>
        <p>
Stay tuned for more tips soon.
</p>
        <p>
Sincerely,<br />
Rossen
</p>
        <img width="0" height="0" src="http://blogs.abilitics.com/aggbug.ashx?id=1e05219e-a84a-45ce-ba18-110dcfa085c0" />
      </body>
      <title>Training tips part 1 – The Trainer Attitude</title>
      <guid isPermaLink="false">http://blogs.abilitics.com/PermaLink,guid,1e05219e-a84a-45ce-ba18-110dcfa085c0.aspx</guid>
      <link>http://blogs.abilitics.com/2008/09/20/TrainingTipsPart1TheTrainerAttitude.aspx</link>
      <pubDate>Sat, 20 Sep 2008 19:09:50 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Recently, Teddy and I started an internal training preparation for MCTs (Microsoft
Certified Trainers) at Abilitics. So far, the guys are doing great! Here is a quick
list of some of the tips:
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;1. Feel Positive&lt;br&gt;
&lt;/strong&gt;You can’t fake it. You can’t pretend to be positive. It is much easier to
actually feel positive and to actually like your audience. Then you will react positively
at everything that happens in the course. The more your react positively, the more
the students react positively and the better the course goes. 
&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;2. Deal with Anxiety &amp;amp; Nervousness!&lt;br&gt;
&lt;/strong&gt;Remember that the training is not about you. It is not about you showing
how much you know, it not about your performance or your presentation skills. 
&lt;br&gt;
It is about the audience. It is about how you can help them. What they will have learned
at the end of the course. Keep in your mind that they deserve best training possible. 
&lt;br&gt;
On another note – every trainer feels anxiety, even the most experienced ones. But
only masters enjoy it and use it as their advantage (as transforming it in enthusiasm)! 
&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;3.&amp;nbsp;Credibility&lt;br&gt;
&lt;/strong&gt;Know your stuff. If you are good, it will show out. If you are not, it will
show. 
&lt;br&gt;
Do use examples from projects that you have completed. Do give them real-life experience.
That is how you will prove your credibility. 
&lt;br&gt;
Don’t cite your certificates, experience, and your company profile, how great you
are and how you know everything.&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;4.&amp;nbsp;Have enthusiasm&lt;br&gt;
&lt;/strong&gt;Be enthusiastic about the technology or the subject matter that you are teaching.
After all, if you, the expert, don’t seem to like the technology, why they should
care about learning it? They shall feel that there is something wonderful that you
going to teach them. 
&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;5.&amp;nbsp;Make them your friends 
&lt;br&gt;
&lt;/strong&gt;Just act friendly. Smile! Laugh!&amp;nbsp;Relax the atmosphere. Don't&amp;nbsp;serve
as authority. And don’t take the course too seriously.
&lt;/p&gt;
&lt;p&gt;
Stay tuned for more tips soon.
&lt;/p&gt;
&lt;p&gt;
Sincerely,&lt;br&gt;
Rossen
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.abilitics.com/aggbug.ashx?id=1e05219e-a84a-45ce-ba18-110dcfa085c0" /&gt;</description>
      <comments>http://blogs.abilitics.com/CommentView,guid,1e05219e-a84a-45ce-ba18-110dcfa085c0.aspx</comments>
      <category>Training</category>
    </item>
    <item>
      <trackback:ping>http://blogs.abilitics.com/Trackback.aspx?guid=a5ed35e5-2532-42a9-9e7b-80ae6341d14c</trackback:ping>
      <pingback:server>http://blogs.abilitics.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.abilitics.com/PermaLink,guid,a5ed35e5-2532-42a9-9e7b-80ae6341d14c.aspx</pingback:target>
      <dc:creator>Rossen Zhivkov</dc:creator>
      <wfw:comment>http://blogs.abilitics.com/CommentView,guid,a5ed35e5-2532-42a9-9e7b-80ae6341d14c.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.abilitics.com/SyndicationService.asmx/GetEntryCommentsRss?guid=a5ed35e5-2532-42a9-9e7b-80ae6341d14c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
We have recently completed a SharePoint Services 3.0 project for task management and
business processes automation. It is a good habit to keep track of what issues
appeared in the project, so that you can make better architecture decisions in
the future.
</p>
        <p>
          <img src="http://blogs.abilitics.com/content/binary/Image_SharePont.png" width="600" border="0" />
        </p>
        <p>
Here is the quick “lessons learned” list:
</p>
        <p>
          <strong>1. Forms authentication<br /></strong>Create first a SharePoint web application with windows authentication, then
extent the web application with forms authentication. Develop or purchase additional
component for users’ registration with features like resetting passwords and emailing
forgotten password.<br /><br />
Articles:<br /><a href="http://msdn.microsoft.com/en-us/library/bb975136.aspx">http://msdn.microsoft.com/en-us/library/bb975136.aspx</a><br /><a href="http://www.simple-talk.com/dotnet/windows-forms/configuring-forms-authentication-in-sharepoint-2007/">http://www.simple-talk.com/dotnet/windows-forms/configuring-forms-authentication-in-sharepoint-2007/</a><br />
Free tool to manage users:<br /><a href="http://www.codeplex.com/fba/Wiki/View.aspx?title=basic%20FBA%20user%20and%20role%20management&amp;referringTitle=Home">http://www.codeplex.com/fba/Wiki/View.aspx?title=basic%20FBA%20user%20and%20role%20management&amp;referringTitle=Home</a></p>
        <p>
          <strong>2. Office integration with SharePoint with Forms authentication<br /></strong>Not working by default as you might have guessed. These are the steps (in
brief) how to configure it:
</p>
        <ul>
          <li>
Enable “client integration” In Central administration -&gt; Application Management
-&gt; Authentication Providers for the selected zone 
</li>
          <li>
When users sign in, they must check “remember me”. In that way, the authentication
cookie is persisted and the rich clients can authenticate to SharePoint. 
</li>
          <li>
SharePoint site must be in trusted sites, or in other internet explorer zone, which
has Internet explorer Protected mode turned off. Protected mode being off enables
other applications (such as Word, SharePoint designer), to use the authentication
cookie 
</li>
          <li>
The user must have appropriate access permissions to use rich client with SharePoint
(check permission levels)</li>
        </ul>
        <p>
Article: 
<br /><a href="http://msdn.microsoft.com/en-us/library/bb977430.aspx">http://msdn.microsoft.com/en-us/library/bb977430.aspx</a></p>
        <p>
          <strong>3. Alternate mappings for publishing SharePoint Services to Internet</strong>
          <br />
Check your alternate access mappings or use load-balanced URL when extending the SharePoint
site. Incorrect alternate access mappings cause login form to appear, but after logon,
a 404 error is given. General rule of thumb - if functionality are working in intranet,
but you have issues in internet, do check the alternate access mappings. Also, check
windows firewall if you use custom ports. You need to open incoming requests on these
ports.<br /><br />
Article:<br /><a href="http://blogs.msdn.com/sharepoint/archive/2007/03/06/what-every-sharepoint-administrator-needs-to-know-about-alternate-access-mappings-part-1.aspx">http://blogs.msdn.com/sharepoint/archive/2007/03/06/what-every-sharepoint-administrator-needs-to-know-about-alternate-access-mappings-part-1.aspx</a> (read
part 1, 2 and 3)<br /><br /><strong>4. Customizing Edit Pages 
<br /></strong>Customized edit pages enables you to rearrange fields, set some fields as
read only, adding additional user controls on the web page, and more.<br />
Abilitics free Edit Page redirector will be available soon. Edit page redirector “redirects”
users to appropriate edit page, based on their group membership or based on field
values. Stay tuned.<br /><br /><strong>5. SharePoint designer workflows &amp; Custom actions<br /></strong>Custom workflow activities enable you to add additional functionality to
workflows that you develop with SharePoint designer. 
<br />
Download free SharePoint designer activities: <a href="http://www.codeplex.com/SPDActivities">http://www.codeplex.com/SPDActivities</a>.
Giving permissions to users with forms authentication does not work. You have to modify
the code of this tool.<br /><br />
Some SharePoint designer workflow issues &amp; solutions:<br /><br />
Issue: Cannot select multiple users when selecting users (as in granting permissions
activity)<br />
Solution: The reason is because SharePoint designer user picker designer type does
not allow you to select multiple users. The workaround is to save the multiple users
in a dynamic string, and then feed the dynamic string to the activity.<br /><br />
Issue: After you edit workflow with SharePoint designer, SharePoint still runs the
old workflow<br />
Solution: it appears to be a bug of some kind. Our workaround is to copy the workflow
and associate it with another library, delete it from the original location, and then
return it back. A friend of mine with the same problem suggested to save the workflow
locally, delete it from SharePoint (the action deletes all previous versions), and
then upload it again.<br /><br />
Issue: SharePoint designer does not show latest version of a custom developed activity<br />
Solution: Delete SharePoint cache from this location C:\Users\rossen.ABILITICS\AppData\Local\Microsoft\WebsiteCache
(on Vista)<br /><br />
Issue: Access denied when custom SharePoint activity is run<br />
Solution: By default, the workflow runs with the security account of the user who
initiated the workflow. You need to run with elevated privileges with SPSecurity.RunWithElevatedPrivileges.
Do remember to recreate new SPSite &amp; SPWeb.
</p>
        <p>
          <strong>6. Modifying item when you have only read-only access</strong>
          <br />
Imagine a vacation request business process. Once approved, you will have read-only
access, because you should not be able to modify it. But you must be able to cancel
your vacation request.<br />
The solution: Create custom web part with single button (Cancel Vacation Request),
put it on the DispForm. The web part will use elevation of privilege (SPSecurity.RunWithElevatedPrivilege)
to modify the current item. DispForm is accessible when you have read-only access,
but edit form is not. 
<br /><br /><strong>7. Script Everything<br /></strong>If you repeat some action twice – script it! 
</p>
        <ul>
          <li>
Script web part deployment, SharePoint designer custom activity deployment, features
activation and deactivation 
</li>
          <li>
Script application pool recycling and web site warming up (<a href="http://blogs.msdn.com/joelo/archive/2006/08/13/697044.aspx">http://blogs.msdn.com/joelo/archive/2006/08/13/697044.aspx</a>) 
</li>
          <li>
Script backup and restore operations(and run backup as scheduled task, or backup the
DB regularily)</li>
        </ul>
        <p>
Script user configuration:<br />
Incorrectly set user accounts and group membership can ruin a perfectly fine SharePoint
implementation. User configuration shall be automated and validated for errors. 
</p>
        <ul>
          <li>
The client provides user accounts, temporary password, emails, user profiles, group
membership in excel file 
</li>
          <li>
Custom application creates the users in the SQL Server AspNetSqlMembership provider
database 
</li>
          <li>
Custom application fills in and validates user profiles in SharePoint (missing properties,
missing managers, incorrect email addresses) 
</li>
          <li>
Stsadm script adds the users to the required security groups in SharePoint</li>
        </ul>
        <p>
Sincerely,<br />
Rossen
</p>
        <img width="0" height="0" src="http://blogs.abilitics.com/aggbug.ashx?id=a5ed35e5-2532-42a9-9e7b-80ae6341d14c" />
      </body>
      <title>Lessons learned from SharePoint Services 3.0 project</title>
      <guid isPermaLink="false">http://blogs.abilitics.com/PermaLink,guid,a5ed35e5-2532-42a9-9e7b-80ae6341d14c.aspx</guid>
      <link>http://blogs.abilitics.com/2008/09/02/LessonsLearnedFromSharePointServices30Project.aspx</link>
      <pubDate>Tue, 02 Sep 2008 19:39:41 GMT</pubDate>
      <description>&lt;p&gt;
We have recently completed a SharePoint Services 3.0 project for task management and
business processes automation. It is a&amp;nbsp;good habit to keep track of what issues
appeared in the project, so that you&amp;nbsp;can make better architecture decisions in
the future.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://blogs.abilitics.com/content/binary/Image_SharePont.png" width=600 border=0&gt;
&lt;/p&gt;
&lt;p&gt;
Here is the&amp;nbsp;quick “lessons learned” list:
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;1. Forms authentication&lt;br&gt;
&lt;/strong&gt;Create first a SharePoint web application with windows authentication, then
extent the web application with forms authentication. Develop or purchase additional
component for users’ registration with features like resetting passwords and emailing
forgotten password.&lt;br&gt;
&lt;br&gt;
Articles:&lt;br&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/bb975136.aspx"&gt;http://msdn.microsoft.com/en-us/library/bb975136.aspx&lt;/a&gt;
&lt;br&gt;
&lt;a href="http://www.simple-talk.com/dotnet/windows-forms/configuring-forms-authentication-in-sharepoint-2007/"&gt;http://www.simple-talk.com/dotnet/windows-forms/configuring-forms-authentication-in-sharepoint-2007/&lt;/a&gt;
&lt;br&gt;
Free tool to manage users:&lt;br&gt;
&lt;a href="http://www.codeplex.com/fba/Wiki/View.aspx?title=basic%20FBA%20user%20and%20role%20management&amp;amp;referringTitle=Home"&gt;http://www.codeplex.com/fba/Wiki/View.aspx?title=basic%20FBA%20user%20and%20role%20management&amp;amp;referringTitle=Home&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;2. Office integration with SharePoint with Forms authentication&lt;br&gt;
&lt;/strong&gt;Not working by default as you might have guessed. These are the steps (in
brief) how to configure&amp;nbsp;it:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Enable “client integration” In Central administration -&amp;gt; Application Management
-&amp;gt; Authentication Providers for the selected zone 
&lt;li&gt;
When users sign in, they must check “remember me”. In that way, the authentication
cookie is persisted and the rich clients can authenticate to SharePoint. 
&lt;li&gt;
SharePoint site must be in trusted sites, or in other internet explorer zone, which
has Internet explorer Protected mode turned off.&amp;nbsp;Protected mode being off enables
other applications (such as Word, SharePoint designer), to use the authentication
cookie 
&lt;li&gt;
The user must have appropriate access permissions to use rich client with SharePoint
(check permission levels)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Article: 
&lt;br&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/bb977430.aspx"&gt;http://msdn.microsoft.com/en-us/library/bb977430.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;3. Alternate mappings for publishing SharePoint Services to Internet&lt;/strong&gt;
&lt;br&gt;
Check your alternate access mappings or use load-balanced URL when extending the SharePoint
site. Incorrect alternate access mappings cause login form to appear, but after logon,
a 404 error is given. General rule of thumb - if functionality are working in intranet,
but you have issues in internet, do check the alternate access mappings. Also, check
windows firewall if you use custom ports. You need to open incoming requests on these
ports.&lt;br&gt;
&lt;br&gt;
Article:&lt;br&gt;
&lt;a href="http://blogs.msdn.com/sharepoint/archive/2007/03/06/what-every-sharepoint-administrator-needs-to-know-about-alternate-access-mappings-part-1.aspx"&gt;http://blogs.msdn.com/sharepoint/archive/2007/03/06/what-every-sharepoint-administrator-needs-to-know-about-alternate-access-mappings-part-1.aspx&lt;/a&gt; (read
part 1, 2 and 3)&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;4. Customizing Edit Pages 
&lt;br&gt;
&lt;/strong&gt;Customized edit pages enables you to rearrange fields, set some fields as
read only, adding additional user controls on the web page, and more.&lt;br&gt;
Abilitics free Edit Page redirector will be available soon. Edit page redirector “redirects”
users to appropriate edit page, based on their group membership or based on field
values. Stay tuned.&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;5. SharePoint designer workflows &amp;amp; Custom actions&lt;br&gt;
&lt;/strong&gt;Custom workflow activities enable you to add additional functionality to
workflows that you develop with SharePoint designer. 
&lt;br&gt;
Download free SharePoint designer activities: &lt;a href="http://www.codeplex.com/SPDActivities"&gt;http://www.codeplex.com/SPDActivities&lt;/a&gt;.
Giving permissions to users with forms authentication does not work. You have to modify
the code of this tool.&lt;br&gt;
&lt;br&gt;
Some SharePoint designer workflow issues&amp;nbsp;&amp;amp; solutions:&lt;br&gt;
&lt;br&gt;
Issue: Cannot select multiple users when selecting users (as in granting permissions
activity)&lt;br&gt;
Solution: The reason is because SharePoint designer user picker designer type does
not allow you to select multiple users. The workaround is to save the multiple users
in a dynamic string, and then feed the dynamic string to the activity.&lt;br&gt;
&lt;br&gt;
Issue: After you edit workflow with SharePoint designer, SharePoint still runs the
old workflow&lt;br&gt;
Solution: it appears to be a bug of some kind. Our workaround is to copy the workflow
and associate it with another library, delete it from the original location, and then
return it back. A friend of mine with the same problem suggested to save the workflow
locally, delete it from SharePoint (the action deletes all previous versions), and
then upload it again.&lt;br&gt;
&lt;br&gt;
Issue: SharePoint designer does not show latest version of a custom developed activity&lt;br&gt;
Solution: Delete SharePoint cache from this location C:\Users\rossen.ABILITICS\AppData\Local\Microsoft\WebsiteCache
(on Vista)&lt;br&gt;
&lt;br&gt;
Issue: Access denied when&amp;nbsp;custom SharePoint activity&amp;nbsp;is run&lt;br&gt;
Solution: By default, the workflow runs with the security account of the user who
initiated the workflow. You need to run with elevated privileges with SPSecurity.RunWithElevatedPrivileges.
Do remember to recreate new SPSite &amp;amp; SPWeb.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;6. Modifying item when you have only&amp;nbsp;read-only access&lt;/strong&gt;
&lt;br&gt;
Imagine a vacation request business process. Once approved, you will have read-only
access, because you should not be able to modify it. But you must be able to cancel
your vacation request.&lt;br&gt;
The solution: Create custom web part with single button (Cancel Vacation Request),
put it on the DispForm. The web part&amp;nbsp;will&amp;nbsp;use elevation of privilege (SPSecurity.RunWithElevatedPrivilege)
to modify the current item. DispForm is accessible when you have read-only access,
but edit form is not. 
&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;7. Script Everything&lt;br&gt;
&lt;/strong&gt;If you repeat some action twice – script it! 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Script web part deployment, SharePoint designer custom activity deployment, features
activation and deactivation 
&lt;li&gt;
Script application pool recycling and web site warming up (&lt;a href="http://blogs.msdn.com/joelo/archive/2006/08/13/697044.aspx"&gt;http://blogs.msdn.com/joelo/archive/2006/08/13/697044.aspx&lt;/a&gt;) 
&lt;li&gt;
Script backup and restore operations(and run backup as scheduled task, or backup the
DB regularily)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Script user configuration:&lt;br&gt;
Incorrectly set user accounts and group membership can ruin a perfectly fine SharePoint
implementation. User configuration shall be automated and validated for errors.&amp;nbsp;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
The client provides user accounts, temporary password, emails, user profiles, group
membership in excel file 
&lt;li&gt;
Custom application creates the users in the SQL Server AspNetSqlMembership provider
database 
&lt;li&gt;
Custom application fills in and validates user profiles in SharePoint (missing properties,
missing managers, incorrect email addresses) 
&lt;li&gt;
Stsadm script adds the users to the required security groups in SharePoint&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Sincerely,&lt;br&gt;
Rossen
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.abilitics.com/aggbug.ashx?id=a5ed35e5-2532-42a9-9e7b-80ae6341d14c" /&gt;</description>
      <comments>http://blogs.abilitics.com/CommentView,guid,a5ed35e5-2532-42a9-9e7b-80ae6341d14c.aspx</comments>
      <category>SharePoint</category>
    </item>
    <item>
      <trackback:ping>http://blogs.abilitics.com/Trackback.aspx?guid=68705d71-a4db-4efb-8b57-a5d42401f4f2</trackback:ping>
      <pingback:server>http://blogs.abilitics.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.abilitics.com/PermaLink,guid,68705d71-a4db-4efb-8b57-a5d42401f4f2.aspx</pingback:target>
      <dc:creator>Rossen Zhivkov</dc:creator>
      <wfw:comment>http://blogs.abilitics.com/CommentView,guid,68705d71-a4db-4efb-8b57-a5d42401f4f2.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.abilitics.com/SyndicationService.asmx/GetEntryCommentsRss?guid=68705d71-a4db-4efb-8b57-a5d42401f4f2</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Dear friend,
</p>
        <p>
Welcome to my blog. I am the one in the right corner, couple of years younger … and
probably wiser :). Brave visionary, determined to go on a hard, but fulfilling journey
for creating success. 
<br />
Here is a little information where I came from, where I am now and where I want to
go!
</p>
        <p>
          <strong>The past</strong>
          <br />
I have spent 3-4 years in one of the leading IT services company in Bulgaria, working
on various projects for .NET, SharePoint and SQL Server. It has been a wild journey
between project work, presales activities, consulting, trainings, presentations, team
building events and everything. 
</p>
        <p>
Despite the fact that I enjoyed my work there and the strong friendships I built,
I decided that it is time to move on. It is time for new beginning, it is time to
make things the way I want them to be and the way I believe they should be.
</p>
        <p>
          <strong>The present 
<br /></strong>I found Abilitics, with lots of passion and belief that it will grow as one
beautiful and healthy company.  So far things are going better than expected.
Our clients believe and trust us, we respond with a quality work, dedication and great
results. 
</p>
        <p>
The team is great, motivated and happy.  We have lots of fun and laugher, which
is the way how we will make our way through the difficulties.   
</p>
        <p>
I am happy that I managed to find the right people for all of the key roles necessary
to deliver our services – we have the PM  &amp; Business analysis girl, the developer
guys, the infrastructure consultant and the QA.  Soon some of them will be blogging
too. The dev guys are great professionals, though I am little jealous that they are
getting better development experts than me. However, that is something that I expected
and ready to give up for the sake of the company success. 
</p>
        <p>
          <strong>The future<br /></strong>Unknown! Fortunately.
</p>
        <p>
Stay with us, I am sure it will be a wild and very interesting ride.
</p>
        <p>
I will share you our experience about various topics around architecture and development
from our SharePoint and .NET projects, as well as Business Intelligence solutions
and Data Mining.
</p>
        <p>
I will give you some insights of our successful practices and the mistakes we
made in Abilitics business, sales and the management.<br />
Abilitics is launching lots of SharePoint-related products right now, some of them
commercial, but some of them are free.  Stay tuned to see how we can make your
life easier with delivering sharepoint projects.  
</p>
        <p>
          <strong>The end<br /></strong>Wish you all lots of good luck, interesting projects and a quality leisure
time. Enjoy!
</p>
        <p>
          <br />
Sincerely,<br /><em>Rossen Zhivkov<br /></em>Founder and Solution Architect,<br />
Abilitics Ltd.<br /></p>
        <img width="0" height="0" src="http://blogs.abilitics.com/aggbug.ashx?id=68705d71-a4db-4efb-8b57-a5d42401f4f2" />
      </body>
      <title>The past, the present and the future</title>
      <guid isPermaLink="false">http://blogs.abilitics.com/PermaLink,guid,68705d71-a4db-4efb-8b57-a5d42401f4f2.aspx</guid>
      <link>http://blogs.abilitics.com/2008/08/06/ThePastThePresentAndTheFuture.aspx</link>
      <pubDate>Wed, 06 Aug 2008 15:06:31 GMT</pubDate>
      <description>&lt;p&gt;
Dear friend,
&lt;/p&gt;
&lt;p&gt;
Welcome to my blog. I am the one in the right corner, couple of years younger … and
probably wiser :). Brave visionary, determined to go on a hard, but fulfilling journey
for creating success. 
&lt;br&gt;
Here is a little information where I came from, where I am now and where I want to
go!
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;The past&lt;/strong&gt;
&lt;br&gt;
I have spent 3-4 years in one of the leading IT services company in Bulgaria, working
on various projects for .NET, SharePoint and SQL Server. It has been a wild journey
between project work, presales activities, consulting, trainings, presentations, team
building events and everything. 
&lt;/p&gt;
&lt;p&gt;
Despite the fact that I enjoyed my work there and the strong friendships I built,
I decided that it is time to move on. It is time for new beginning, it is time to
make things the way I want them to be and the way I believe they should be.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;The present 
&lt;br&gt;
&lt;/strong&gt;I found Abilitics, with lots of passion and belief that it will grow as one
beautiful and healthy company.&amp;nbsp; So far things are going better than expected.
Our clients believe and trust us, we respond with a quality work, dedication and great
results. 
&lt;/p&gt;
&lt;p&gt;
The team is great, motivated and happy.&amp;nbsp; We have lots of fun and laugher, which
is the way how we will make our way through the difficulties.&amp;nbsp;&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
I am happy that I managed to find the right people for all of the key roles necessary
to deliver our services – we have the PM&amp;nbsp; &amp;amp; Business analysis girl, the developer
guys, the infrastructure consultant and the QA.&amp;nbsp; Soon some of them will be blogging
too. The dev guys are great professionals, though I am little jealous that they are
getting better development experts than me. However, that is something that I expected
and ready to give up for the sake of the company success. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;The future&lt;br&gt;
&lt;/strong&gt;Unknown! Fortunately.
&lt;/p&gt;
&lt;p&gt;
Stay with us, I am sure it will be a wild and very interesting ride.
&lt;/p&gt;
&lt;p&gt;
I will share you our experience about various topics around architecture and development
from our SharePoint and .NET projects, as well as Business Intelligence solutions
and Data Mining.
&lt;/p&gt;
&lt;p&gt;
I will give you some insights of our successful practices&amp;nbsp;and the mistakes we
made in Abilitics business, sales and the management.&lt;br&gt;
Abilitics is launching lots of SharePoint-related products right now, some of them
commercial, but some of them are free.&amp;nbsp; Stay tuned to see how we can make your
life easier with delivering sharepoint projects.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;The end&lt;br&gt;
&lt;/strong&gt;Wish you all lots of good luck, interesting projects and a quality leisure
time. Enjoy!
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
Sincerely,&lt;br&gt;
&lt;em&gt;Rossen Zhivkov&lt;br&gt;
&lt;/em&gt;Founder and Solution Architect,&lt;br&gt;
Abilitics Ltd.&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.abilitics.com/aggbug.ashx?id=68705d71-a4db-4efb-8b57-a5d42401f4f2" /&gt;</description>
      <comments>http://blogs.abilitics.com/CommentView,guid,68705d71-a4db-4efb-8b57-a5d42401f4f2.aspx</comments>
      <category>General</category>
      <category>SharePoint</category>
    </item>
  </channel>
</rss>