<?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/"
	>

<channel>
	<title>Art Of Creation - Dynamics AX Blog &#187; security</title>
	<atom:link href="http://www.artofcreation.be/tag/security/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.artofcreation.be</link>
	<description>The everyday life of a Dynamics AX developer</description>
	<lastBuildDate>Thu, 02 Feb 2012 12:20:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Top reasons to follow best practices</title>
		<link>http://www.artofcreation.be/2011/08/16/top-reasons-follow-best-practices/</link>
		<comments>http://www.artofcreation.be/2011/08/16/top-reasons-follow-best-practices/#comments</comments>
		<pubDate>Tue, 16 Aug 2011 17:14:16 +0000</pubDate>
		<dc:creator>Klaas Deforche</dc:creator>
				<category><![CDATA[Dynamics AX]]></category>
		<category><![CDATA[Best practices]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[X++]]></category>

		<guid isPermaLink="false">http://www.artofcreation.be/?p=1067</guid>
		<description><![CDATA[Hi all. Here&#8217;s a list of af few reasons why I think it is important to fix those best practice errors :-). Improved performance Many best practices have an influence on performance. For example, it is best practice to set the property CreateRecIdIndex to True on tables with Created/Modified DateTime fields. If you don&#8217;t, this [...]]]></description>
			<content:encoded><![CDATA[<p>Hi all. </p>
<p>Here&#8217;s a list of af few reasons why I think it is important to fix those best practice errors :-). </p>
<p><strong>Improved performance</strong><br />
Many best practices have an influence on performance. For example, it is best practice to set the property CreateRecIdIndex to True on tables with Created/Modified DateTime fields. If you don&#8217;t, this will have an adverse effect on the performance of those tables.<br />
Another example is that if you adhere to the best practices concerning the construction of classes and the use of batch classes, it will be much easier to improve performance by enabling batch multi-threading. </p>
<p><strong>Improved readability of code</strong><br />
When all developers follow best practices about formatting of code, the code will be more readable and easier to understand. Avoiding dead code and removing unused variables will also make the code less confusing. </p>
<p><strong>Developers learn</strong><br />
There are a lot of handy things you can learn by solving best practice deviations. Adding fields to field groups for example is a great way to avoid customizations to forms. And by figuring out what configuration is needed on a menu item, you learn about what effect configuration keys have on you solution. </p>
<p><strong>Improved security </strong><br />
Adding security and configuration keys is vital to good security. When ignoring best practices, an unauthorized user might cause a big mess that you&#8217;ll have to clean up. </p>
<p><strong>Certified for Dynamics AX</strong><br />
Making sure your solution is best practice deviation free goes a long way towards passing the <a href="http://en-us.lionbridge.com/ProductEngg.aspx?pageid=1197&#038;LangType=1033">Software Solution Test</a>. </p>
<p><strong>Better user experience</strong><br />
Some best practices have to do with labels, help texts, descriptions for batch task, etc. If you ignore those, it will be more difficult for the user to understand the solution you created. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.artofcreation.be/2011/08/16/top-reasons-follow-best-practices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cannot edit a record in Translation table (DEL_PBATranslateConsistOf). Access Denied</title>
		<link>http://www.artofcreation.be/2010/08/29/cannot-edit-a-record-in-translation-table-del_pbatranslateconsistof-access-denied/</link>
		<comments>http://www.artofcreation.be/2010/08/29/cannot-edit-a-record-in-translation-table-del_pbatranslateconsistof-access-denied/#comments</comments>
		<pubDate>Sun, 29 Aug 2010 11:54:23 +0000</pubDate>
		<dc:creator>Klaas Deforche</dc:creator>
				<category><![CDATA[Dynamics AX]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Error]]></category>
		<category><![CDATA[PBA]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://www.artofcreation.be/?p=887</guid>
		<description><![CDATA[When deleting a company account in Dynamics AX 2009, you can get the following errors: User &#8216;Admin&#8217; is not authorized to delete a record in table &#8216;DEL_PBATRANSLATECONSISTOF). Request den[ied]. Cannot edit a record in Translation table (DEL_PBATranslateConsistOf). Access Denied: You do not have sufficient authorization to modify data in database. This week was the n-th [...]]]></description>
			<content:encoded><![CDATA[<p>When deleting a company account in Dynamics AX 2009, you can get the following errors:</p>
<blockquote><p>User &#8216;Admin&#8217; is not authorized to delete a record in table &#8216;DEL_PBATRANSLATECONSISTOF). Request den[ied].<br />
Cannot edit a record in Translation table (DEL_PBATranslateConsistOf). Access Denied: You do not have sufficient authorization to modify data in database. </p></blockquote>
<p>This week was the n-th time someone has come to me with this problem, so it&#8217;s time to blog about it :-). </p>
<p>The error you receive is odd, because user in question has enough rights to edit any table (administrator).<br />
This error occurs when you don&#8217;t have the Product Builder (PBA) license key enabled. </p>
<p>There are two possible solutions to this problem:</p>
<ul>
<li>Either activate the license key for Product Builder under Administration &#8211; Setup &#8211; System &#8211; License information (if you have the PBA license key), and after synchronizing the Data Dictionary, you should be able to delete the company account</li>
<li>Or if you don&#8217;t have the PBA license key, go to the AOT &#8211; Data Dictionary &#8211; Tables &#8211; DEL_PBATranslateConsistOf, and clear the security key property.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.artofcreation.be/2010/08/29/cannot-edit-a-record-in-translation-table-del_pbatranslateconsistof-access-denied/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Problem solving in AX</title>
		<link>http://www.artofcreation.be/2009/05/13/problem-solving-in-ax/</link>
		<comments>http://www.artofcreation.be/2009/05/13/problem-solving-in-ax/#comments</comments>
		<pubDate>Wed, 13 May 2009 19:04:30 +0000</pubDate>
		<dc:creator>Klaas Deforche</dc:creator>
				<category><![CDATA[Dynamics AX]]></category>
		<category><![CDATA[Debug]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://www.artofcreation.be/?p=83</guid>
		<description><![CDATA[Sometimes, when developing, AX doesn&#8217;t work as expected, or behaves weird. Here are some of the things you can try if you run out of ideas, roughly in the order I do: Try again You probably already did, but make sure you can reproduce the problem. If it only occurred once, it&#8217;s not a problem. [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes, when developing, AX doesn&#8217;t work as expected, or behaves weird.<br />
Here are some of the things you can try if you run out of ideas, roughly in the order I do:</p>
<p><strong>Try again</strong><br />
You probably already did, but make sure you can reproduce the problem. If it only occurred once, it&#8217;s not a problem.</p>
<p><strong>Check your code again</strong><br />
Check your code carefully for errors, and maybe ask a colleague&#8217;s opinion.</p>
<p><strong>Compile</strong><br />
Your project might contain compile errors, so compile it to be sure.</p>
<p><strong>Close the debugger</strong><br />
Sometimes, when the debugger is active, AX will keep executing &#8216;old&#8217; code. Close the debugger to make sure the latest code is executing.</p>
<p><strong>Compile forward</strong><br />
When you have modified a class that is inherited by other classes, you might want to compile forward this class.</p>
<p><strong>Synchronize data dictionary</strong><br />
You may have made changes to application objects that haven&#8217;t been synchronized with the database. Open the AOT, right click on the Data Dictionary node and choose Synchronize.</p>
<p><strong>Restart AX client</strong><br />
Simple as that, close the AX client and start it again.</p>
<p><strong>Reset usage data</strong><br />
Go to options screen (AX button > Extra > Options) and click the Usage Data button. Click reset to remove this data.</p>
<p><strong>Check the application event log for clues</strong><br />
Open the event viewer on the AOS to see if the AOS service has logged something in it. Messages here can help you a great deal. You can also check the event log on the database server or your client pc. </p>
<p><strong>Google it</strong><br />
If you receive an error, just copy and paste it in Google. Most likely you are not the only one having that problem.</p>
<p><strong>Check your client version</strong><br />
Check your AX client version. You might for example be connecting to a SP1 application with an SP0 client. You can check this in the about screen: AX button > Help > About. The kernel version indicates the client version, below that is the application version.</p>
<p><strong>Refresh AOD, Dictionary and Data</strong><br />
You can flush cashed information using three option in the Tools > Development tools menu: refresh AOD, refresh Dictionary and refresh Data. This can be useful when you just imported an xpo file, or when you are developing for the enterprise portal.</p>
<p><strong>Delete AUC file</strong><br />
The application Unicode object cache file, if there is one, is located at C:\Documents and Settings\[USERNAME]\Local Settings\Application Data for xp, or C:\Users\USERNAME\AppData\Local for vista. Delete this file while the AX client is closed.</p>
<p><strong>Check if other users are having the same problem</strong><br />
Knowing whether you are the only one that&#8217;s having that problem or if it&#8217;s a general problem is a big step towards solving the problem. For example, if you alone have the problem, restarting the AOS probably won&#8217;t solve it, but removing usage data might.</p>
<p><strong>Check security settings</strong><br />
When only some users have a problem, big changes are that it has something to do with security settings. Security can be set up from Administration > Setup > Security, on the Permissions tab. </p>
<p><strong>Check configuration key setup</strong><br />
Some features of AX won&#8217;t work if a configuration key is disabled, be aware of this.</p>
<p><strong>Full compile</strong><br />
Open the AOT, right click the AOT node and select compile. </p>
<p><strong>Restart AOS</strong><br />
Sometimes restarting the AOS solves your problem just fine. If you can, it&#8217;s worth the try as this doesn&#8217;t take long.</p>
<p><strong>Remove .aoi file</strong><br />
When the AOS is stopped, you can delete the .aoi file from the application files. This file will be rebuilt when the AOS starts. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.artofcreation.be/2009/05/13/problem-solving-in-ax/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Change security permissions for admin group</title>
		<link>http://www.artofcreation.be/2009/04/23/change-security-permissions-for-admin-group/</link>
		<comments>http://www.artofcreation.be/2009/04/23/change-security-permissions-for-admin-group/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 20:51:45 +0000</pubDate>
		<dc:creator>Klaas Deforche</dc:creator>
				<category><![CDATA[Dynamics AX]]></category>
		<category><![CDATA[Debug]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://www.artofcreation.be/?p=75</guid>
		<description><![CDATA[In Dynamics AX, it is not possible to change the user group permissions for admin group. This is because users in this group should always have full control over the Dynamics AX setup. But sometime, you&#8217;ll have to change it, whatever you reason may be. One reason why you might need to change these, is [...]]]></description>
			<content:encoded><![CDATA[<p>In Dynamics AX, it is not possible to change the user group permissions for admin group. This is because users in this group should always have full control over the Dynamics AX setup. </p>
<p>But sometime, you&#8217;ll have to change it, whatever you reason may be. One reason why you might need to change these, is because the user group permissions setup has been messed up by adding one or more new security keys, or by importing them from an xpo file. The security keys will be set to &#8216;No access&#8217;, and because you can&#8217;t change these for the admin group, this poses a problem. </p>
<p>This can easily be solved by changing the method isAdmin() on the form SysUserGroupSecurity to return false.</p>
<div class="codecolorer-container xpp default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="xpp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">#admin<br />
<span style="color: #0000ff;">boolean</span> isAdmin<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><br />
<span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp;<span style="color: #007f00; font-style: italic;">/*if (userGroupInfo.Id == #AdminUserGroup &amp;&amp;<br />
&nbsp; &nbsp; &nbsp; (domainInfo.Id &nbsp; &nbsp;== #AdminDomain || !useDomains))<br />
&nbsp; &nbsp;{<br />
&nbsp; &nbsp; &nbsp; &nbsp;return true;<br />
&nbsp; &nbsp;}*/</span><br />
&nbsp; &nbsp;<span style="color: #0000ff;">return</span> <span style="color: #0000ff;">false</span>;<br />
<span style="color: #000000;">&#125;</span></div></div>
<p>Alternatively, if you don&#8217;t want to change your code, you can put a breakpoint on the &#8216;return true&#8217; statement, and then drag/drop the pointer to return false.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.artofcreation.be/2009/04/23/change-security-permissions-for-admin-group/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

