<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>PeopleSoft Tipster &#187; Security</title>
	<atom:link href="http://peoplesofttipster.com/category/security/feed/" rel="self" type="application/rss+xml" />
	<link>http://peoplesofttipster.com</link>
	<description>A PeopleSoft Tips and Tricks Blog</description>
	<lastBuildDate>Wed, 25 Jan 2012 23:44:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='peoplesofttipster.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>PeopleSoft Tipster &#187; Security</title>
		<link>http://peoplesofttipster.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://peoplesofttipster.com/osd.xml" title="PeopleSoft Tipster" />
	<atom:link rel='hub' href='http://peoplesofttipster.com/?pushpress=hub'/>
		<item>
		<title>Deleting old User Profiles</title>
		<link>http://peoplesofttipster.com/2012/01/10/deleting-old-user-profiles/</link>
		<comments>http://peoplesofttipster.com/2012/01/10/deleting-old-user-profiles/#comments</comments>
		<pubDate>Tue, 10 Jan 2012 22:52:06 +0000</pubDate>
		<dc:creator>Tipster</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[PeopleSoft]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://peoplesofttipster.com/?p=714</guid>
		<description><![CDATA[Vanilla databases often contain 150-200 ‘example’ user profiles. While these can be useful to clone as a starting point early in an implementation, they’re frequently left dormant as the project continues – and sometimes still exist in Production post go-live. It’s a straightforward task to lock the accounts, but once you have your security setup [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=peoplesofttipster.com&amp;blog=893910&amp;post=714&amp;subd=duncandavies&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Vanilla databases often contain 150-200 ‘example’ user profiles. While these can be useful to clone as a starting point early in an implementation, they’re frequently left dormant as the project continues – and sometimes still exist in Production post go-live.</p>
<p>It’s a straightforward task to lock the accounts, but once you have your security setup in place and your own template user profiles to clone then these ‘example’ accounts no longer serve any purpose. Here’s an easy way to delete them.<span id="more-714"></span></p>
<p><em><span style="color:#ff0000;">First of all, a warning. Before you delete anything make sure that you have adequate backups and have performed a trial restore recently.</span></em></p>
<p>For a little while now (at least from Tools 8.49) there has been functionality to delete inactive users. It classes an inactive user as one who hasn’t logged on for a set amount of days (using the LASTSIGNONDTTM field on PSOPRDEFN). You can check for user profiles that haven’t logged in for a long time (say, 2 years) using SQL like this:</p>
<p><pre class="brush: plain;">
select OPRID
     , LASTSIGNONDTTM
  from PSOPRDEFN 
 where LASTSIGNONDTTM &lt;= sysdate-730
</pre></p>
<p>(note: sysdate-730 is approximately 2 years ago)</p>
<p>You’ll probably find that the list contains none of your users, but a lot of the ‘example’ accounts. These are the accounts that will be purged, so make sure that you’re happy that there are no important accounts in the list.</p>
<p>There are also a lot of example user profiles that have never signed in who therefore have a null LASTSIGNONDTTM. These need to be updated so that the process will also purge them:</p>
<p><pre class="brush: plain;">
update PSOPRDEFN 
   set LASTSIGNONDTTM = '01-JAN-01 00.00.00.000000000' 
 where LASTSIGNONDTTM is null
</pre></p>
<p>Once you’re happy with the purge list, we need to setup the process. Go to:</p>
<p><em><span style="color:#333399;">PeopleTools &gt; Security &gt; Password Configuration &gt; Password Controls</span></em></p>
<p>Under the Purge User Profiles heading enter the amount of days that you’ve chosen (730 in my example) and click Save.</p>
<p>Then either click the Schedule button, or go to:</p>
<p><em><span style="color:#333399;">PeopleTools &gt; Security &gt; User Profiles &gt; Purge Inactive User Profiles</span></em></p>
<p>Select a Run Control ID and run the Purge process. It’s not particularly fast (as it’s done via CI), but if you run the following piece of SQL you’ll be able to see your unneeded OPRIDs slowly disappearing:</p>
<p><pre class="brush: plain;">
select count(OPRID) 
  from PSOPRDEFN 
 where LASTSIGNONDTTM &lt;= sysdate-730
</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/duncandavies.wordpress.com/714/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/duncandavies.wordpress.com/714/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/duncandavies.wordpress.com/714/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/duncandavies.wordpress.com/714/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/duncandavies.wordpress.com/714/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/duncandavies.wordpress.com/714/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/duncandavies.wordpress.com/714/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/duncandavies.wordpress.com/714/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/duncandavies.wordpress.com/714/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/duncandavies.wordpress.com/714/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/duncandavies.wordpress.com/714/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/duncandavies.wordpress.com/714/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/duncandavies.wordpress.com/714/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/duncandavies.wordpress.com/714/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=peoplesofttipster.com&amp;blog=893910&amp;post=714&amp;subd=duncandavies&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://peoplesofttipster.com/2012/01/10/deleting-old-user-profiles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/42d38fff00428e8b120714d45980af8d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Tipster</media:title>
		</media:content>
	</item>
		<item>
		<title>Creating an entirely read-only user in PeopleSoft</title>
		<link>http://peoplesofttipster.com/2008/08/28/creating-an-entirely-read-only-user-in-peoplesoft/</link>
		<comments>http://peoplesofttipster.com/2008/08/28/creating-an-entirely-read-only-user-in-peoplesoft/#comments</comments>
		<pubDate>Thu, 28 Aug 2008 22:15:00 +0000</pubDate>
		<dc:creator>Tipster</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[PeopleSoft]]></category>
		<category><![CDATA[PeopleTools]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://duncandavies.wordpress.com/?p=139</guid>
		<description><![CDATA[On big projects it is quite likely that large numbers of developers have access to a many environments. Occasionally they can have access to environment which is quite important, for instance one that the customer is using for training or testing. To reduce the likelihood of developers accidentally deleting some data that they shouldn&#8217;t it [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=peoplesofttipster.com&amp;blog=893910&amp;post=139&amp;subd=duncandavies&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>On big projects it is quite likely that large numbers of developers have access to a many environments.  Occasionally they can have access to environment which is quite important, for instance one that the customer is using for training or testing.</p>
<p>To reduce the likelihood of developers accidentally deleting some data that they shouldn&#8217;t it would be quite normal to remove their access to the environment altogether.  However if they need access for troubleshooting purposes then (at least on projects I&#8217;ve seen) it&#8217;s quite normal for developers to be told &#8220;OK, you can have access, but be careful not to do anything destructive&#8221;.  Occasionally &#8211; as with everything &#8211; things can go wrong.  Either someone forgets which environment they&#8217;re in, or does something with unintended consequences.  An alternative to the &#8220;just be careful&#8221; approach would be to create an entirely read-only user profile (i.e. one that has display only privileges to every component system-wide).</p>
<p>A read-only user profile is shown in screenshot below, where no fields are editable and the save button is inactivated:</p>
<p><img class="size-full wp-image-143 alignnone" src="http://duncandavies.files.wordpress.com/2008/08/read-only_job.jpg?w=460&#038;h=374" alt="" width="460" height="374" /></p>
<p>Also, on Run Control pages the &#8216;Run&#8217; button is inactive.  It&#8217;s going to be pretty difficult to alter data in this environment.</p>
<p>Here&#8217;s how to do it quickly and easily &#8230;</p>
<p><span id="more-139"></span></p>
<h3>1. Create User Profile</h3>
<p>First, craft your perfect &#8216;read/write&#8217; user profile.  I&#8217;ll call this &#8216;DMD&#8217;.  Now clone it using the &#8216;Copy User Profile&#8217; functionality in the PIA.  This creates a new user profile (in my case &#8216;DMD_R&#8217;) with the same Roles, and this is the one we&#8217;re going to turn read-only.</p>
<h3>2. Create new Read-Only Permission Lists</h3>
<p>First create the Permission Lists by cloning those that are currently against the User Profile:</p>
<p><code><span style="font-size:9pt;line-height:80%;font-family:'Lucida Console';color:#7f7f7f;">INSERT INTO PSCLASSDEFN<br />
(CLASSID, VERSION, CLASSDEFNDESC, TIMEOUTMINUTES, DEFAULTBPM,<br />
 STARTAPPSERVER, ALLOWPSWDEMAIL, LASTUPDDTTM, LASTUPDOPRID)<br />
(SELECT CLASSID || '_R'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, VERSION<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, CLASSDEFNDESC<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, TIMEOUTMINUTES<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, DEFAULTBPM<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, STARTAPPSERVER<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, ALLOWPSWDEMAIL<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, SYSDATE<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, 'DMD'<br />
&nbsp;&nbsp;&nbsp;FROM PSCLASSDEFN<br />
&nbsp;&nbsp;WHERE CLASSID IN (<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SELECT DISTINCT CLASSID<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM PSROLECLASS<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHERE ROLENAME IN (<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SELECT ROLENAME<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM PSROLEUSER<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHERE ROLEUSER = 'DMD_R')))</span></code></p>
<p>Don&#8217;t forget to add the sign-on times:</p>
<p><code><span style="font-size:9pt;line-height:80%;font-family:'Lucida Console';color:#7f7f7f;">INSERT INTO PSAUTHSIGNON (CLASSID, DAYOFWEEK, STARTTIME, ENDTIME)<br />
SELECT CLASSID || '_R'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, DAYOFWEEK<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, STARTTIME<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, ENDTIME<br />
&nbsp;&nbsp;FROM PSAUTHSIGNON<br />
&nbsp;WHERE CLASSID IN (<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SELECT DISTINCT CLASSID<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM PSROLECLASS<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHERE ROLENAME IN (<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SELECT ROLENAME<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM PSROLEUSER<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHERE ROLEUSER = 'DMD_R'))</p>
<h3>3. Make the Permission Lists Display Only</h3>
<p></span></code><br />
We add the pages to the new permission lists, but set Display Only to 1:</p>
<p><code><span style="font-size:9pt;line-height:80%;font-family:'Lucida Console';color:#7f7f7f;">INSERT INTO PSAUTHITEM (CLASSID, MENUNAME, BARNAME, BARITEMNAME, PNLITEMNAME, DISPLAYONLY, AUTHORIZEDACTIONS)<br />
(SELECT CLASSID || '_R'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, MENUNAME<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, BARNAME<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, BARITEMNAME<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, PNLITEMNAME<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, 1 DISPLAYONLY<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, AUTHORIZEDACTIONS<br />
&nbsp;&nbsp;&nbsp;FROM PSAUTHITEM<br />
&nbsp;&nbsp;WHERE CLASSID IN (<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SELECT DISTINCT CLASSID<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM PSROLECLASS<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHERE ROLENAME IN (<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SELECT ROLENAME<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM PSROLEUSER<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHERE ROLEUSER = 'DMD_R')))</span></code></p>
<h3>4. Create the new Read-Only Roles</h3>
<p><code><span style="font-size:9pt;line-height:80%;font-family:'Lucida Console';color:#7f7f7f;">INSERT INTO PSROLEDEFN<br />
(ROLENAME, VERSION, ROLETYPE, DESCR, QRYNAME, ROLESTATUS, RECNAME, FIELDNAME, PC_EVENT_TYPE, QRYNAME_SEC, PC_FUNCTION_NAME, ROLE_PCODE_RULE_ON, ROLE_QUERY_RULE_ON, LDAP_RULE_ON, ALLOWNOTIFY, ALLOWLOOKUP, LASTUPDDTTM, LASTUPDOPRID, DESCRLONG)<br />
(SELECT SUBSTR(ROLENAME, 1,28) || '_R'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, VERSION<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, ROLETYPE<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, DESCR<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, QRYNAME<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, ROLESTATUS<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, RECNAME<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, FIELDNAME<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, PC_EVENT_TYPE<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, QRYNAME_SEC<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, PC_FUNCTION_NAME<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, ROLE_PCODE_RULE_ON<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, ROLE_QUERY_RULE_ON<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, LDAP_RULE_ON<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, ALLOWNOTIFY<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, ALLOWLOOKUP<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, SYSDATE<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, 'DMD'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, DESCRLONG<br />
&nbsp;&nbsp;&nbsp;FROM PSROLEDEFN<br />
&nbsp;&nbsp;WHERE ROLENAME IN (<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SELECT DISTINCT ROLENAME<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM PSROLEUSER<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHERE ROLEUSER = 'DMD_R'))</span></code></p>
<h3>5. Add the read only permission lists to the read only roles</h3>
<p><code><span style="font-size:9pt;line-height:80%;font-family:'Lucida Console';color:#7f7f7f;">INSERT INTO PSROLECLASS(ROLENAME, CLASSID)<br />
(SELECT SUBSTR(ROLENAME, 1,28) || '_R'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, CLASSID || '_R'<br />
&nbsp;&nbsp;&nbsp;FROM PSROLECLASS<br />
&nbsp;&nbsp;WHERE ROLENAME IN (<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SELECT DISTINCT ROLENAME<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM PSROLEUSER<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHERE ROLEUSER = 'DMD_R'))</span></code></p>
<h3>6. Update the user profile with the new read only rolenames</h3>
<p><code><span style="font-size:9pt;line-height:80%;font-family:'Lucida Console';color:#7f7f7f;">UPDATE PSROLEUSER<br />
&nbsp;&nbsp;&nbsp;SET ROLENAME = SUBSTR(ROLENAME, 1,28) || '_R'<br />
&nbsp;WHERE ROLEUSER = 'DMD_R'</span></code></p>
<p>And that&#8217;s it, although you may well also need to perform the following:</p>
<ul>
<li>Run Portal Security Sync (to sync security up).</li>
<li>Bounce the App Server and clear cache (my App Server didn&#8217;t pick up the signon times from the cloned permission lists until I did this).</li>
<li>Run SJT_OPR_CLS (Refresh the Security Join Table that contains the Operator and Classid data)</li>
<li>Close and reopen your Web Browser and clear it&#8217;s local cache.</li>
</ul>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/duncandavies.wordpress.com/139/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/duncandavies.wordpress.com/139/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/duncandavies.wordpress.com/139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/duncandavies.wordpress.com/139/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/duncandavies.wordpress.com/139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/duncandavies.wordpress.com/139/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/duncandavies.wordpress.com/139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/duncandavies.wordpress.com/139/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/duncandavies.wordpress.com/139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/duncandavies.wordpress.com/139/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/duncandavies.wordpress.com/139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/duncandavies.wordpress.com/139/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/duncandavies.wordpress.com/139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/duncandavies.wordpress.com/139/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/duncandavies.wordpress.com/139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/duncandavies.wordpress.com/139/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=peoplesofttipster.com&amp;blog=893910&amp;post=139&amp;subd=duncandavies&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://peoplesofttipster.com/2008/08/28/creating-an-entirely-read-only-user-in-peoplesoft/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/42d38fff00428e8b120714d45980af8d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Tipster</media:title>
		</media:content>

		<media:content url="http://duncandavies.files.wordpress.com/2008/08/read-only_job.jpg" medium="image" />
	</item>
	</channel>
</rss>
