<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2922897515457313968</id><updated>2012-02-15T23:54:36.031-08:00</updated><title type='text'>Khanfar Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mkhanfar.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2922897515457313968/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://mkhanfar.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Mohammad Khanfar</name><uri>http://www.blogger.com/profile/04498311483566280533</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2922897515457313968.post-1345703135057209171</id><published>2009-07-22T01:31:00.000-07:00</published><updated>2009-07-22T02:31:00.631-07:00</updated><title type='text'>Creating Custom SharePoint Timer Job</title><content type='html'>The first thing you need to do is create a class that inherits from the Microsoft.SharePoint.Administration.SPJobDefinition class. To implement this class, you need to create a few constructors and override the Execute() method, like so:&lt;br /&gt;&lt;br /&gt;     namespace SharePointApps.TaskLogger {&lt;br /&gt;       public class TaskLoggerJob : SPJobDefinition{&lt;br /&gt;      &lt;br /&gt;         public TaskLoggerJob ()&lt;br /&gt;           : base(){&lt;br /&gt;         }&lt;br /&gt;      /* this constructor will be used to define the SP server where we want to install  the job*/&lt;br /&gt;         public TaskLoggerJob (string jobName, SPService service, SPServer  server,SPJobLockType targetType)&lt;br /&gt;          : base (jobName, service, server, targetType) {&lt;br /&gt;        }&lt;br /&gt;     &lt;br /&gt;      /* this constructor will be used to assign the job for SP server*/&lt;br /&gt; &lt;br /&gt;       public TaskLoggerJob (string jobName, SPWebApplication webApplication)&lt;br /&gt;          : base (jobName, webApplication, null, SPJobLockType.ContentDatabase) {&lt;br /&gt;          this.Title = "Task Logger";&lt;br /&gt;        }&lt;br /&gt;     &lt;br /&gt;        public override void Execute (Guid contentDbId) {&lt;br /&gt;          // get a reference to the current site collection's content database&lt;br /&gt;          SPWebApplication webApplication = this.Parent as SPWebApplication;&lt;br /&gt;          SPContentDatabase contentDb = webApplication.ContentDatabases[contentDbId];&lt;br /&gt;     &lt;br /&gt;          // get a reference to the "Tasks" list in the RootWeb of the first site collection in the content database&lt;br /&gt;          SPList taskList = contentDb.Sites[0].RootWeb.Lists["Tasks"];&lt;br /&gt;     &lt;br /&gt;          // create a new task, set the Title to the current day/time, and update the item&lt;br /&gt;          SPListItem newTask = taskList.Items.Add();&lt;br /&gt;          newTask["Title"] = DateTime.Now.ToString();&lt;br /&gt;          newTask.Update();&lt;br /&gt;        }&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Aside from the requirement of inheriting from the SPJobDefinition class, the only other requirement is that the class override the Execute virtual method defined in the SPJobDefinition class. This is the method that Windows SharePoint Services calls when the job is executed. It receives a single parameter, the ID of the content database that is being processed by the job. With the custom timer job in this article, it returns the value of Guid.Empty because the target type of the job is not a content database. The Execute method in the warmup job issues a request for the home page of each site collection in the specified Web application, as shown in this example.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; Unfortunately the only way to do this is through code, but it sure would be one heck of a candidate for a custom STSADM command. Anyway, since we don't have that today, I like to use the feature activated &amp; deactivated events to install/uninstall my custom jobs.&lt;br /&gt;&lt;br /&gt;To do this, you have to create another class that inherits from the Microsoft.SharePoint.SPFeatureReceiver class and implement the FeatureActivated &amp; FeatureDeactivated event handlers like so:&lt;br /&gt;&lt;br /&gt;     namespace SharePointApps.TaskLogger {&lt;br /&gt;         class TaskLoggerJobInstaller : SPFeatureReceiver {&lt;br /&gt;         const string TASK_LOGGER_JOB_NAME = "TaskLogger";&lt;br /&gt;         public override void FeatureInstalled (SPFeatureReceiverProperties properties) {&lt;br /&gt;         }&lt;br /&gt;      &lt;br /&gt;         public override void FeatureUninstalling (SPFeatureReceiverProperties properties) {&lt;br /&gt;         }&lt;br /&gt;      &lt;br /&gt;        public override void FeatureActivated (SPFeatureReceiverProperties properties) {&lt;br /&gt;          SPSite site = properties.Feature.Parent as SPSite;&lt;br /&gt;     &lt;br /&gt;          // make sure the job isn't already registered&lt;br /&gt;          foreach (SPJobDefinition job in site.WebApplication.JobDefinitions) {&lt;br /&gt;            if (job.Name == TASK_LOGGER_JOB_NAME)&lt;br /&gt;              job.Delete();&lt;br /&gt;          }&lt;br /&gt;     &lt;br /&gt;          // install the job&lt;br /&gt;          TaskLoggerJob taskLoggerJob = new TaskLoggerJob(TASK_LOGGER_JOB_NAME, site.WebApplication);&lt;br /&gt;     &lt;br /&gt;          SPMinuteSchedule schedule = new SPMinuteSchedule();&lt;br /&gt;          schedule.BeginSecond = 0;&lt;br /&gt;          schedule.EndSecond = 59;&lt;br /&gt;          schedule.Interval = 5;&lt;br /&gt;          taskLoggerJob.Schedule = schedule;&lt;br /&gt;     &lt;br /&gt;          taskLoggerJob.Update();&lt;br /&gt;        }&lt;br /&gt;     &lt;br /&gt;        public override void FeatureDeactivating (SPFeatureReceiverProperties properties) {&lt;br /&gt;          SPSite site = properties.Feature.Parent as SPSite;&lt;br /&gt;     &lt;br /&gt;          // delete the job&lt;br /&gt;          foreach (SPJobDefinition job in site.WebApplication.JobDefinitions) {&lt;br /&gt;            if (job.Name == TASK_LOGGER_JOB_NAME)&lt;br /&gt;             job.Delete();&lt;br /&gt;          }&lt;br /&gt;        }&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;Now... to get it working, all you need to do is:&lt;br /&gt;&lt;br /&gt;Deploy the strongly named assembly to the GAC. &lt;br /&gt;Reset IIS (required for SharePoint to "see" the new timer job in the GAC). &lt;br /&gt;Create a feature specifying the receiver class and assembly that contains the event receivers. &lt;br /&gt;Install the feature. &lt;br /&gt;Activate the feature. &lt;br /&gt;This sample timer job assumes it's running within the context of a WSS v3 site that has a list created with the Tasks list template in the root web within the site collection (or, just create a Team Site at the root of your site collection).&lt;br /&gt;&lt;br /&gt;Once you activate the feature, it should show up on the Timer Job Definitions page in Central Administration / Operations. It won't appear in the Timer Job Status page until it's executed at least one time. Wait for five minutes or so (the schedule this sample is using) to see if it's running. You should start to see items showing up in the Tasks list in the root site in your site collection.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Or, you can use this Windows SharePoint Solution Package (*.WSP) to deploy the prebuilt timer job used in this article (handles steps 1-4 above):&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To deploy the WSP file, simply add it to the solution store using STSADM (using the following command) and then deploy it to the desired site:&lt;br /&gt;&lt;br /&gt;stsadm –o addsolution –filename SharePointApps.TaskLoggerJob.ws&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2922897515457313968-1345703135057209171?l=mkhanfar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkhanfar.blogspot.com/feeds/1345703135057209171/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2922897515457313968&amp;postID=1345703135057209171' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2922897515457313968/posts/default/1345703135057209171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2922897515457313968/posts/default/1345703135057209171'/><link rel='alternate' type='text/html' href='http://mkhanfar.blogspot.com/2009/07/creating-custom-sharepoint-timer-job.html' title='Creating Custom SharePoint Timer Job'/><author><name>Mohammad Khanfar</name><uri>http://www.blogger.com/profile/04498311483566280533</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2922897515457313968.post-6014909571227915644</id><published>2008-01-20T00:21:00.000-08:00</published><updated>2008-01-20T00:23:45.573-08:00</updated><title type='text'>SharePoint Database Migration</title><content type='html'>This post describes one of the main migration processes from SharePoint 2003 to SharePoint 2007;It called Database migration. This solutions is one of the most easiest solution, which is depend on moving whole content as it is to the new server.&lt;br /&gt;To start the migration process, you should follow the following steps:&lt;br /&gt;&lt;br /&gt;1. &lt;strong&gt;You must run the Prescan.exe tool on the WSS database to prepare the database to be added to the WSS 3.0 Web application&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;To use the Prescan.exe tool to scan the WSS database, follow these steps:&lt;br /&gt;a. Copy the Prescan.exe tool on the WSS 3.0 server to a folder on the WSS server(Note The Prescan.exe tool is located on the WSS 3.0 server in the following folder: Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN)&lt;br /&gt;&lt;br /&gt;b. Run the prescan.exe tool from the prompt and type the following commands:               prescan.exe /c preupgradescanconfig.xml /all. At the end of the process you will receive a report if the upgrade process succeeds or not.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. &lt;strong&gt;Detach the Desired Database form Database Server and move it to SharePoint 2007 Database Server&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;3. &lt;strong&gt;Create Web application&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;4. &lt;strong&gt;Delete the Content Database of the Web applications that we have created .&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;5. &lt;strong&gt;Go to stsadm.exe tool (Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN) and use this command to attach the  migrated Database to the web application that you created.&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;stsadm.exe -o addcontentdb&lt;br /&gt;           -url url&lt;br /&gt;           -databasename &lt;database name&gt;&lt;br /&gt;           [-databaseserver &lt;database server name&gt;]&lt;br /&gt;           [-databaseuser &lt;database username&gt;]&lt;br /&gt;           [-databasepassword &lt;database password&gt;]&lt;br /&gt;           [-sitewarning &lt;site warning count&gt;]&lt;br /&gt;           [-sitemax &lt;site max count&gt;]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2922897515457313968-6014909571227915644?l=mkhanfar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkhanfar.blogspot.com/feeds/6014909571227915644/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2922897515457313968&amp;postID=6014909571227915644' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2922897515457313968/posts/default/6014909571227915644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2922897515457313968/posts/default/6014909571227915644'/><link rel='alternate' type='text/html' href='http://mkhanfar.blogspot.com/2008/01/sharepoint-database-migration.html' title='SharePoint Database Migration'/><author><name>Mohammad Khanfar</name><uri>http://www.blogger.com/profile/04498311483566280533</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2922897515457313968.post-8172264045855226386</id><published>2007-09-12T03:45:00.000-07:00</published><updated>2008-01-20T00:45:37.726-08:00</updated><title type='text'>SIP ( Session Initial protocol )</title><content type='html'>&lt;strong&gt;SIP Definition:&lt;/strong&gt;&lt;br /&gt;SIP stands for Session Initiation Protocol. It is an application-layer control protocol which has been developed and designed within the IETF. The protocol has been designed with easy implementation, good scalability, and flexibility in mind.&lt;br /&gt;The protocol is used for creating, modifying, and terminating sessions with one or more participants. By sessions we understand a set of senders and receivers that communicate and the state kept in those senders and receivers during the communication. Examples of a session can include Internet telephone calls,&lt;br /&gt;distribution of multimedia, multimedia conferences, distributed computer games, etc.&lt;br /&gt;SIP is not the only protocol that the communicating devices will need. It is not meant to be a general purpose protocol. Purpose of SIP is just to make the communication possible, the communication itself must be achieved by another means (and possibly another protocol). Two protocols that are most often used&lt;br /&gt;along with SIP are RTP and SDP. RTP protocol is used to carry the real-time multimedia data (including audio, video, and text), the protocol makes it possible to encode and split the data into packets and transport such packets over the Internet. Another important protocol is SDP, which is used to describe and encode&lt;br /&gt;capabilities of session participants. Such a description is then used to negotiate the characteristics of the session so that all the devices can participate.&lt;br /&gt;(it is also can be described as : a text-based protocol that used in the application layer , it is used to manage signaling and session between two end points ) .&lt;br /&gt;The SIP entities are identified by URI ( Uniform Resource Identifier ) , and the form will be as following:&lt;br /&gt;&lt;br /&gt;sip:username@domain&lt;br /&gt;&lt;br /&gt;Suppose that you want to call peter at yahoo domain , so when you invite him the SIP URI will be as following&lt;br /&gt;&lt;br /&gt;sip:peterUserName@yahoo.com&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;SIP Network Elements:&lt;br /&gt;&lt;br /&gt;1- User Agents: are the endpoints that use SIP to find each other and to a negotiate session. This user can refer to the User Agent Server (UAS) or User Agents Clients (UAC). User Agent Server is the endpoint that receives requests and sends responses, where the User agent Client is the endpoint the send requests and receives responses.&lt;br /&gt;so the user agent can be a UAS or UAC , when you are the caller , you send the invite request for the Callee who will receive the request and send a response , so you are a UAC and the Callee is UAS.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2- Proxy Server:&lt;br /&gt;Proxy servers are very important entities in the SIP infrastructure , its is used to routing a session&lt;br /&gt;invitations to according to user agent location and accounting , the session invitation will traverse a long set&lt;br /&gt;of proxies until it find the proxy that actually know the location of the callee.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_Ebig7QaDmd4/R5MJjIyl2VI/AAAAAAAAAAs/F66wjUxGrdc/s1600-h/untitled.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_Ebig7QaDmd4/R5MJjIyl2VI/AAAAAAAAAAs/F66wjUxGrdc/s320/untitled.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5157476497529100626" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;User Joe uses address sip:bob@b.com to call Bob. Joe's user agent doesn't know how to route the invitation itself but it is configured to send all outbound traffic to the company SIP proxy server proxy.a.com. The proxy server figures out that user sip:bob@b.com is in a different company so it will look up B's SIP proxy&lt;br /&gt;server and send the invitation there. B's proxy server can be either preconfigured at proxy.a.com or the proxy will use DNS SRV records to find B's proxy server. The invitation reaches proxy.bo.com. The proxy knows that Bob is currently sitting in his office and is reachable through phone on his desk, which has IP&lt;br /&gt;address 1.2.3.4, so the proxy will send the invitation there. But the question is how the proxy b.com know the location of the callee? The third entity in the SIP Infrastructure is (3- Registrar) . when sip:bob@b.com&lt;br /&gt;is activate , his information that represent his address is sent to Registrar and stored in the location database , so the proxy b.com the information in the location database to determine the location of callee , these information represent the ipaddress of the calle , the port and the username. Before the callee onfo is stored&lt;br /&gt;in the location database the SIP URI is map to : sip:username@CalleeIPaddress.com .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2922897515457313968-8172264045855226386?l=mkhanfar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkhanfar.blogspot.com/feeds/8172264045855226386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2922897515457313968&amp;postID=8172264045855226386' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2922897515457313968/posts/default/8172264045855226386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2922897515457313968/posts/default/8172264045855226386'/><link rel='alternate' type='text/html' href='http://mkhanfar.blogspot.com/2007/09/sip-session-initial-protocol.html' title='SIP ( Session Initial protocol )'/><author><name>Mohammad Khanfar</name><uri>http://www.blogger.com/profile/04498311483566280533</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Ebig7QaDmd4/R5MJjIyl2VI/AAAAAAAAAAs/F66wjUxGrdc/s72-c/untitled.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2922897515457313968.post-5069220726576741417</id><published>2007-09-12T01:33:00.000-07:00</published><updated>2007-09-12T02:43:11.146-07:00</updated><title type='text'>Import User Profiles form Database</title><content type='html'>Before Describe the process of importing user profiles from BDC , everybody must consider this &lt;strong&gt;note&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;BDC cannot act as the primary source for user profile information. BDC can only work as a supplementary data source, in other words, you must have an import connection setup with say Active Directory or something else, before you can choose to supplement that information from BDC. BDC cannot be your master import connection.&lt;/em&gt;&lt;br /&gt;&lt;strong&gt;Prerequisite &lt;/strong&gt;: Configuring Single Sign On Service&lt;br /&gt;Now you can start importing user profiles by following these steps :&lt;br /&gt;1. In the SSP Admin page you’ll see a whole section devoted to the BDC. Click on ‘Import application definition’. &lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_Ebig7QaDmd4/Rueykvs5AlI/AAAAAAAAAAM/dAkcrDQMB8E/s1600-h/howto1-11.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_Ebig7QaDmd4/Rueykvs5AlI/AAAAAAAAAAM/dAkcrDQMB8E/s320/howto1-11.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5109248646624903762" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. Use the browser button to locate our application definition file, or type in the path and filename yourself. Leave all the other options as they are for the time being, and click ‘Import’ &lt;br /&gt;&lt;br /&gt;Note : to Create BDC xml file , you can use Metaman tool &lt;br /&gt;&lt;a href="http://www.bdcmetaman.com/downloads/BDCMetaMan2.0.0.2.zip"&gt;http://www.bdcmetaman.com/downloads/BDCMetaMan2.0.0.2.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_Ebig7QaDmd4/Rueykvs5AmI/AAAAAAAAAAU/bRaJGDPWFgs/s1600-h/howto1-12.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_Ebig7QaDmd4/Rueykvs5AmI/AAAAAAAAAAU/bRaJGDPWFgs/s320/howto1-12.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5109248646624903778" /&gt;&lt;/a&gt;&lt;br /&gt;3. In the SSP Admin page ,go to section users profiles and properties. Click on ‘Import New Connection’. Add  a new connection for the new data sources (DBC)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_Ebig7QaDmd4/Rueyk_s5AnI/AAAAAAAAAAc/JQI3wZYD4dQ/s1600-h/screen1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_Ebig7QaDmd4/Rueyk_s5AnI/AAAAAAAAAAc/JQI3wZYD4dQ/s320/screen1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5109248650919871090" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_Ebig7QaDmd4/RueylPs5AoI/AAAAAAAAAAk/sFj0xAjkLgM/s1600-h/screen2.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_Ebig7QaDmd4/RueylPs5AoI/AAAAAAAAAAk/sFj0xAjkLgM/s320/screen2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5109248655214838402" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4. After applying the steps above, the database info is added to user profile, and you have the option to create new properties that use BDC as main source for their values&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2922897515457313968-5069220726576741417?l=mkhanfar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkhanfar.blogspot.com/feeds/5069220726576741417/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2922897515457313968&amp;postID=5069220726576741417' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2922897515457313968/posts/default/5069220726576741417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2922897515457313968/posts/default/5069220726576741417'/><link rel='alternate' type='text/html' href='http://mkhanfar.blogspot.com/2007/09/import-user-profiles-form-database.html' title='Import User Profiles form Database'/><author><name>Mohammad Khanfar</name><uri>http://www.blogger.com/profile/04498311483566280533</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Ebig7QaDmd4/Rueykvs5AlI/AAAAAAAAAAM/dAkcrDQMB8E/s72-c/howto1-11.png' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
