<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.aras.com/community/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Tom Semeraro さんのアクティビティ</title><link>https://www.aras.com/community/members/tsemeraroaras_2d00_com</link><description>Tom Semeraro さんの最近のアクティビティ</description><dc:language>ja-JP</dc:language><generator>Telligent Community 12</generator><item><title>Extended Team</title><link>https://www.aras.com/community/subscriber-portal/w/user-guide/941/extended-team</link><pubDate>Fri, 21 Apr 2023 14:30:03 GMT</pubDate><guid isPermaLink="false">916d3f7e-8ddc-42f8-8d45-380822f51406:1fd01947-5c09-4576-b171-7468711731e7</guid><dc:creator>Vian Abraham</dc:creator><description>&lt;h1 id="mcetoc_1imnbqouq0"&gt;1 Introduction and access&lt;/h1&gt;
&lt;p&gt;Working with an implementation partner and want them to join your Support team so that they can view Support Incidents, add comments, create new Support Incidents, as well as participate in Support Incident correspondence? If you want to invite others from outside your organization to join your Support team, the Portal Admin for your organization can add these individuals as external Support team members.&lt;span style="font-family:inherit;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;Extended Team members have the same access as Channel Partners. Please review section 1 of the &lt;a href="/community/subscriber-portal/w/user-guide/680/subscribers-with-channel-partners"&gt;Subscribers with Channel Partners&lt;/a&gt;&amp;nbsp;FAQ.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h1 id="mcetoc_1imnbqsn91"&gt;2 How to Add Extended Users&amp;nbsp;&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;In the upper right corner of the Subscriber Portal, locate your profile icon and select &amp;quot;Our Account&amp;quot;
&lt;ol&gt;
&lt;li&gt;&lt;img style="max-height:240px;max-width:320px;" alt=" " src="/community/resized-image/__size/640x480/__key/communityserver-wikis-components-files/00-00-00-00-31/pastedimage1742394087417v1.png" /&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Click on the Support Access tab
&lt;ol&gt;
&lt;li&gt;&lt;img style="max-height:240px;max-width:320px;" alt=" " src="/community/resized-image/__size/640x480/__key/communityserver-wikis-components-files/00-00-00-00-31/pastedimage1742394289372v2.png" /&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Press the Add Users to Your Extended Team button.&lt;/li&gt;
&lt;li&gt;A dialog window will open for you to enter the email addresses of the individuals you like to add to your extended Support team.
&lt;ol&gt;
&lt;li&gt;&lt;img style="max-height:240px;max-width:320px;" alt=" " src="/community/resized-image/__size/640x480/__key/communityserver-wikis-components-files/00-00-00-00-31/pastedimage1742394318003v3.png" /&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;When you have entered the email address of everyone you would like to add, press Next.&lt;/li&gt;
&lt;li&gt;Review the terms and conditions and press Agree &amp;amp; Save.&lt;/li&gt;
&lt;li&gt;Each person will receive an email notification that they have been added to your organization&amp;rsquo;s extended Support team.&lt;span style="font-family:inherit;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id="mcetoc_1imnbr8r42"&gt;&lt;span style="font-family:inherit;"&gt;3 Common Questions&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;Having problems adding an external Support team member, try the following suggestions.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;This email address is associated with your organization. &lt;/strong&gt;Please invite this individual to join your internal team using the Invite Your Team action on the Team tab. If you believe the email address is not associated with your organization, please contact your account owner to resolve this domain conflict.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Too many Support users - An Aras subscriber may have up to 10 Admin + Support users who can directly contact Aras Support.&lt;/strong&gt; External team members count towards your total Support user limit. Make sure the number of internal Support team members and extended Support team members does not exceed 10 people. &amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;This individual does not have an Aras Portal account and cannot be added as a member of your Extended Team. &lt;/strong&gt;Please ask this individual to &lt;a href="/community/subscriber-portal/p/new-account"&gt;create an Aras Portal account&lt;/a&gt; and try again after they can access the Aras Portal.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;This individual is not properly setup as a Partner. &lt;/strong&gt;Please have this individual contact your account owner or &lt;a href="mailto:partners@aras.com"&gt;partners@aras.com&lt;/a&gt; to resolve this issue.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Still having problems adding an extended Support team member? Reach out through &lt;a href="/community/subscriber-portal/w/user-guide/711/subscriber-portal-help"&gt;Portal Feedback&lt;/a&gt; and someone will reach out directly as soon as possible to help you troubleshoot.&lt;em&gt; &lt;/em&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>サブスクライバーポータル ヘルプ</title><link>https://www.aras.com/community/subscriber-portal/w/user-guide-jp/1033/page</link><pubDate>Fri, 01 Dec 2023 18:48:28 GMT</pubDate><guid isPermaLink="false">916d3f7e-8ddc-42f8-8d45-380822f51406:33177976-8e58-45d2-a11f-bac7a9ff9023</guid><dc:creator>Yumi Kambara</dc:creator><description>&lt;p&gt;サブスクライバーポータルのご利用中に問題が発生した場合や、機能に関するフィードバック、ご質問などがございましたら、どうぞお気軽にお問い合わせください。&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" src="/community/resized-image/__size/640x480/__key/communityserver-wikis-components-files/00-00-00-00-67/pastedimage1753332554531v1.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;画面右上に表示されているご自身のユーザーアカウント（お名前）をクリックし、&lt;strong&gt;「Portal Feedback（ポータルへのフィードバック）」&lt;/strong&gt;を選択して、リクエストの詳細をご記入ください。&lt;/p&gt;
&lt;p&gt;できる限り早急にご連絡させていただきます。&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Innovator API</title><link>https://www.aras.com/community/subscriber-portal/training/w/development-best-practices/692/innovator-api</link><pubDate>Thu, 24 Jun 2021 20:59:57 GMT</pubDate><guid isPermaLink="false">916d3f7e-8ddc-42f8-8d45-380822f51406:f04ef74b-9bf5-4ffa-9e3f-950c3e373548</guid><dc:creator>Boma Koko</dc:creator><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="#Use-innovator-API-as-much-as-possible"&gt;Use innovator API as much as possible&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Avoid-usage-of-where-attribute-with-get-request"&gt;Avoid usage of where attribute with get request&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Make-as-less-requests-as-possible"&gt;Make as less requests as possible&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Use-select-attribute-with-get-requests"&gt;Use select attribute with get requests&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Check-item-for-error-after-apply-call"&gt;Check item for error after apply call&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Use-doGetItem-if-you-dont-use-response-result"&gt;Use doGetItem=&amp;rdquo;0&amp;rdquo; if you don&amp;rsquo;t use response result&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Avoid-using-xPaths-as-much-as-possible"&gt;Avoid using xPaths as much as possible&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Use-RequestState-object-carefully"&gt;Use RequestState object carefully&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Do-not-forget-to-Revoke-granted-identities"&gt;Do not forget to Revoke granted identities&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Do-not-grant-Super-User-Identity"&gt;Do not grant Super User Identity&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Avoid-using-SQL-operations"&gt;Avoid using SQL operations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Innovator-methods-should-have-proper-execution-permissions"&gt;Innovator methods should have proper execution permissions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Wisely-use-returnMode-on-get-AML-request"&gt;Wisely use returnMode on get AML request&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Use-client-side-cache"&gt;Use client-side cache to get Variable values instead of requesting them from the server&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;&lt;a id="Use-innovator-API-as-much-as-possible"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table width="1011" height="97"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="border-color:#CC1C1C;" colspan="2"&gt;&lt;span style="font-family:inherit;font-size:150%;"&gt;&lt;strong&gt;&lt;span class="TextRun SCXW21549198 BCX0" lang="EN-US"&gt;&lt;span class="NormalTextRun SCXW21549198 BCX0"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW21549198 BCX0" lang="EN-US"&gt;&lt;span class="NormalTextRun SCXW21549198 BCX0"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW21549198 BCX0" lang="EN-US"&gt;&lt;span class="NormalTextRun SCXW21549198 BCX0"&gt;&lt;span class="TextRun SCXW196477406 BCX0" lang="EN-US"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Use innovator API as much as possible&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style="font-family:inherit;"&gt;Severity&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:inherit;"&gt;1&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style="font-family:inherit;"&gt;Info&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Try to use IOM API instead of applyAML as much as possible.&lt;br /&gt;&lt;br /&gt;In case if performance is critical and there is a way to implement logic without API in a better way, this rule can be ignored.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:150px;"&gt;&lt;span style="font-family:inherit;"&gt;Examples&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;
&lt;ul&gt;
&lt;li&gt;Get id of the item&lt;br /&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;string item = this.getID(); //not this.getProperty(“id”);&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Get list of parent identities ids&lt;br /&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;Aras.Server.Core.InnovatorDatabase database = context.DB.InnDatabase;
string[] identityMembers = Aras.Server.Security.Permissions.GetAncestorIdentityIds(database, new string[] { identityId });&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Get list of User Identities&lt;br /&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;string userId = this.getInnovator().getUserID();
var userIdentities = Aras.Server.Security.Permissions.GetIdentitiesList(CCO.DB.InnDatabase, userId);&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;GetItemRepeatConfig and other API actions&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style="font-family:inherit;"&gt;Facts&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;It is preferable to use innovator API instead of creation your own methods, because innovator API was tested by the product QA team&lt;/li&gt;
&lt;li&gt;When using Innovator API, there is less chance that when upgrading Innovator to a newer version your logic will stop working.&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;&lt;a id="Avoid-usage-of-where-attribute-with-get-request"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table width="1011" height="97"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="border-color:#CC1C1C;" colspan="2"&gt;&lt;span style="font-family:inherit;font-size:150%;"&gt;&lt;strong&gt;&lt;span class="TextRun SCXW21549198 BCX0" lang="EN-US"&gt;&lt;span class="NormalTextRun SCXW21549198 BCX0"&gt;2.&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW21549198 BCX0" lang="EN-US"&gt;&lt;span class="NormalTextRun SCXW21549198 BCX0"&gt;&lt;span class="TextRun SCXW196477406 BCX0" lang="EN-US"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Avoid usage of where attribute with get request&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Severity&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Info&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;In this case SQL server cannot cache execution plan which causes performance problems.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;Sometimes in confusing operations AND and OR, to increase transparency it is possible to use attribute &amp;quot;where&amp;quot;. But only if the given AML query is not run too often and it will not affect performance.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:150px;"&gt;Examples&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style="background-color:#ff0000;"&gt;Wrong way:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;Item item = dal.NewItem(&amp;quot;SomeType&amp;quot;, &amp;quot;get&amp;quot;);
item.setAttribute(&amp;quot;where&amp;quot;, &amp;quot;some_prop=&amp;#39;&amp;quot; + this.getProperty(&amp;quot;some_prop&amp;quot;) + &amp;quot;&amp;#39;&amp;quot;);
Item result = dal.ApplyItem(item);&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#99cc00;"&gt;Correct way:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;Item item = dal.NewItem(&amp;quot;SomeType&amp;quot;, &amp;quot;get&amp;quot;);
string propValue = contextItem.getProperty(&amp;quot;some_prop&amp;quot;);
item.setProperty(&amp;quot;some_prop&amp;quot;, propValue);
Item result = dal.ApplyItem(item);&lt;/pre&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Facts&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style="font-family:inherit;"&gt;AML where sentence is inserted directly into SQL query after some injection validations.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family:inherit;"&gt;It means SQL parameters aren&amp;rsquo;t used for AML where query which leads to recompilation of SQL request each time and affects performance.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:inherit;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;&lt;a id="Make-as-less-requests-as-possible"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table width="1011" height="97"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="border-color:#CC1C1C;" colspan="2"&gt;&lt;span style="font-family:inherit;font-size:150%;"&gt;&lt;strong&gt;&lt;span class="TextRun SCXW21549198 BCX0" lang="EN-US"&gt;&lt;span class="NormalTextRun SCXW21549198 BCX0"&gt;&lt;span class="TextRun SCXW196477406 BCX0" lang="EN-US"&gt;&lt;span&gt;3. Make as less requests as possible&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Severity&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:inherit;"&gt;1&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Info&lt;/td&gt;
&lt;td&gt;Performance critical&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:150px;"&gt;Examples&lt;/td&gt;
&lt;td&gt;
&lt;ul&gt;
&lt;li&gt;Caching&lt;/li&gt;
&lt;li&gt;Relationships structure in a single request (also fetchRelationships)&lt;/li&gt;
&lt;li&gt;idlist attribute instead of several requests&lt;/li&gt;
&lt;li&gt;Avoid calling Innovator methods inside of a loop&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Facts&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;Each HTTP request makes several tcp requests which are multiplied by latency time.&lt;/li&gt;
&lt;li&gt;&lt;span class="TextRun SCXW217684185 BCX0" lang="EN-US"&gt;&lt;span class="NormalTextRun SCXW217684185 BCX0"&gt;Each request initiates additional logic on the server to validate credentials, headers, input data, etc.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP SCXW217684185 BCX0"&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;&lt;a id="Use-select-attribute-with-get-requests"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table width="1011" height="97"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="border-color:#CC1C1C;" colspan="2"&gt;&lt;span style="font-family:inherit;font-size:150%;"&gt;&lt;strong&gt;&lt;span class="TextRun SCXW21549198 BCX0" lang="EN-US"&gt;&lt;span class="NormalTextRun SCXW21549198 BCX0"&gt;&lt;span class="TextRun SCXW196477406 BCX0" lang="EN-US"&gt;&lt;span&gt;4. Use select attribute with get requests&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Severity&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:inherit;"&gt;1&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Info&lt;/td&gt;
&lt;td&gt;Performance critical - request only what you are going to use&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:150px;"&gt;Examples&lt;/td&gt;
&lt;td&gt;
&lt;ul&gt;
&lt;li&gt;Properties of item (e.g. &amp;ldquo;name&amp;rdquo;)&lt;/li&gt;
&lt;li&gt;Properties of item properties (e.g. &amp;ldquo;id of team&amp;rdquo;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;private Item GetPartItem(string partId)
{
	Item part = dal.NewItem(&amp;quot;Part&amp;quot;, &amp;quot;get&amp;quot;);
	part.setAttribute(&amp;quot;select&amp;quot;, &amp;quot;name, team_id(id)&amp;quot;);
	//...
	return dal.ApplyItem(part);
}&lt;/pre&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Facts&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;Performance improvement as the response takes up less size&lt;/li&gt;
&lt;li&gt;Less XML response size is faster to handle&lt;/li&gt;
&lt;li&gt;Less JOINs in SQL requests if we ignore some property items&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;&lt;a id="Check-item-for-error-after-apply-call"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table width="1011" height="97"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="border-color:#CC1C1C;" colspan="2"&gt;&lt;span style="font-family:inherit;font-size:150%;"&gt;&lt;strong&gt;&lt;span class="TextRun SCXW21549198 BCX0" lang="EN-US"&gt;&lt;span class="NormalTextRun SCXW21549198 BCX0"&gt;&lt;span class="TextRun SCXW196477406 BCX0" lang="EN-US"&gt;&lt;span&gt;5. Check item for error after apply call&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Severity&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:inherit;"&gt;1&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Info&lt;/td&gt;
&lt;td&gt;Error validation helps to avoid critical errors&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:150px;"&gt;Examples&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style="background-color:#ff0000;"&gt;Wrong way:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;Item getResult = dal.ApplyItem(someGetRequest);

string propertyValue = getResult.getProperty(&amp;quot;my_property&amp;quot;);
// propertyValue manipulation&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#99cc00;"&gt;Correct way:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;Item getResult = dal.ApplyItem(someGetRequest);

if (getResult.isError())
{
	return getResult;
}

string propertyValue = getResult.getProperty(&amp;quot;my_property&amp;quot;);
// propertyValue manipulation&lt;/pre&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Facts&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;The further logic might not expect error result case&lt;/li&gt;
&lt;li&gt;If isEmpty = true then isError is also true.&lt;/li&gt;
&lt;li&gt;getItemCount is less than 0 only in case isError is true and isEmpty is false.&lt;/li&gt;
&lt;li&gt;No need to create new error with same message, at this rate we are losing stack trace or any other error information.&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;&lt;a id="Use-doGetItem-if-you-dont-use-response-result"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table width="1011" height="97"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="border-color:#CC1C1C;" colspan="2"&gt;&lt;span style="font-family:inherit;font-size:150%;"&gt;&lt;strong&gt;&lt;span class="TextRun SCXW21549198 BCX0" lang="EN-US"&gt;&lt;span class="NormalTextRun SCXW21549198 BCX0"&gt;&lt;span class="TextRun SCXW196477406 BCX0" lang="EN-US"&gt;&lt;span&gt;6. Use doGetItem=&amp;rdquo;0&amp;rdquo; if you don&amp;rsquo;t use response result&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Severity&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:inherit;"&gt;1&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Info&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;Performance critical&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:150px;"&gt;Examples&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;If you want to Update\Edit Item without handling of result (only check if it succeeded) you should use doGetItem attribute to reduce size of response.&lt;/p&gt;
&lt;p&gt;Without&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;doGetItem=&amp;rsquo;0&amp;rsquo;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;img alt=" " src="/resized-image/__size/320x240/__key/communityserver-wikis-components-files/00-00-00-00-44/dogetitem_5F00_1.png" /&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;With&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;doGetItem=&amp;rsquo;0&amp;rsquo;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;img alt=" " src="/resized-image/__size/320x240/__key/communityserver-wikis-components-files/00-00-00-00-44/dogetitem_5F00_2.png" /&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Facts&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;Performance improvement since the Innovator Core does not have to apply a GET action to generate the full result.&lt;/li&gt;
&lt;li&gt;Performance improvement as the response takes up less size.&lt;/li&gt;
&lt;li&gt;In case cases may help to avoid SQL deadlocks.&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;&lt;a id="Avoid-using-xPaths-as-much-as-possible"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table width="1011" height="97"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="border-color:#CC1C1C;" colspan="2"&gt;&lt;span style="font-family:inherit;font-size:150%;"&gt;&lt;strong&gt;&lt;span class="TextRun SCXW21549198 BCX0" lang="EN-US"&gt;&lt;span class="NormalTextRun SCXW21549198 BCX0"&gt;&lt;span class="TextRun SCXW196477406 BCX0" lang="EN-US"&gt;&lt;span&gt;7. Avoid using xPaths as much as possible&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Severity&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:inherit;"&gt;2&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Info&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;Avoid xPaths usage in case you have simple Items structure, and target Item can easily be reached by standard IOM API (like getRalationships(), getRelatedItem() and so on).&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:150px;"&gt;Examples&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style="background-color:#ff0000;"&gt;Wrong way:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;1) Can be done with standard IOM API&lt;br /&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;Item relationships = this.getItemsByXPath(&amp;quot;//Item/Relationships/Item[@type=&amp;#39;someType&amp;#39;]&amp;quot;);&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#99cc00;"&gt;Correct way:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;1) No need to use xPath&lt;br /&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;Item relationships = this.getRelationships(&amp;quot;someType&amp;quot;);&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;2) Item structure contains File items in different levels of dom. Please note, here used &amp;ldquo;.//&amp;rdquo;, not just &amp;ldquo;//&amp;rdquo;. In this case search is work only for descendant nodes, ancestor nodes are ignored.&lt;br /&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;this.getItemsByXPath(&amp;quot;.//Item[@type=&amp;#39;File&amp;#39;]&amp;quot;); &lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;3) In case if you need to get some&amp;nbsp;Item with nesting level&amp;nbsp;more or equal 3, xPath can be used (or cannot, it&amp;#39;s not mandatory to use it)&lt;pre class="ui-code" data-mode="csharp"&gt;this.getItemsByXPath(&amp;quot;Item/Relationships/Item[@type=’Workflow’]/related_id/Item[@type=’Workflow Process’]/Relationships/Item[@type=’Workflow Process Activity’]&amp;quot;);&lt;/pre&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Facts&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;Use the standard API, since it contains the most efficient algorithms for passing through the structure&lt;/li&gt;
&lt;li&gt;If xPath is required, avoid using &amp;lsquo;//&amp;rsquo; as it affects performance.&lt;/li&gt;
&lt;li&gt;&amp;lsquo;//&amp;rsquo; xPath takes the whole document as a target of search even if you call xPath method on any node in the document. It may cause unexpected result.&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;&lt;a id="Use-RequestState-object-carefully"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table width="1011" height="97"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="border-color:#CC1C1C;" colspan="2"&gt;&lt;span style="font-family:inherit;font-size:150%;"&gt;&lt;strong&gt;&lt;span class="TextRun SCXW21549198 BCX0" lang="EN-US"&gt;&lt;span class="NormalTextRun SCXW21549198 BCX0"&gt;&lt;span class="TextRun SCXW196477406 BCX0" lang="EN-US"&gt;&lt;span&gt;8. Use RequestState object carefully&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Severity&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:inherit;"&gt;2&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Info&lt;/td&gt;
&lt;td&gt;When using RequestState object, make sure you understand how the values will be used in case more than one object is processed within on request&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:150px;"&gt;Examples&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;There is an onBeforeAdd item method to set value to the RequestState and onAfterAdd item method to get and process value that was previously set. In case more than one item is added within one request, the value could be overwritten and the logic could be broken.&lt;/p&gt;
&lt;p&gt;&lt;img alt=" " src="/resized-image/__size/320x240/__key/communityserver-wikis-components-files/00-00-00-00-44/requeststate_5F00_1.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#ff0000;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Facts&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;This will help prevent logical errors in business processes.&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Info&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;RequestState is an object which exists only in context of any server request&lt;/li&gt;
&lt;li&gt;The same RequestState item is used in every event executed in context of the same request&lt;/li&gt;
&lt;li&gt;Try to use unique key for RequestState for intended set of methods to not unintentionally overwrite values from another methods (like mentioned in example)&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;&lt;a id="Do-not-forget-to-Revoke-granted-identities"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table width="1011" height="97"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="border-color:#CC1C1C;" colspan="2"&gt;&lt;span style="font-family:inherit;font-size:150%;"&gt;&lt;strong&gt;&lt;span class="TextRun SCXW21549198 BCX0" lang="EN-US"&gt;&lt;span class="NormalTextRun SCXW21549198 BCX0"&gt;&lt;span class="TextRun SCXW196477406 BCX0" lang="EN-US"&gt;&lt;span&gt;9. Do not forget to Revoke granted identities&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Severity&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Info&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;Specify additional permissions only for a limited amount of code which applies item and revoke them right after it to avoid unexpected permissions grant.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Exceptions&lt;/i&gt;&lt;em&gt;:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/em&gt;if server method uses&lt;i&gt;&amp;nbsp;Aras.ARK.Common&lt;/i&gt;&amp;nbsp;there is no need to revoke Identity, since&amp;nbsp;this logic is already included&amp;nbsp;in methods like &amp;quot;ApplyItemWithGrantIdentity&amp;quot;, &amp;quot;ApplyActionWithGrantIdentity&amp;quot;, etc.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:150px;"&gt;Examples&lt;/td&gt;
&lt;td&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;public Item ApplyItemWithGrantIdentity(Item item, string identityName)
{
	Aras.Server.Security.Identity identityForGrant = Aras.Server.Security.Identity.GetByName(identityName);
	bool permissionWasGranted = false;
	try
	{
		permissionWasGranted = Aras.Server.Security.Identity.GrantIdentity(identityForGrant);
		return item.apply();
	}
	finally
	{
		if (permissionWasGranted)
		{
			Aras.Server.Security.Identity.RevokeIdentity(identityForGrant);
		}
	}
}&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Facts&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;GrantIdentity call grants permission until they are revoked or until the end of the server method execution.&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Info&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;So, in case you forget to revoke permission some code in the same server method might apply AML with extended permissions list which might lead to security leaks.&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;&lt;a id="Do-not-grant-Super-User-Identity"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table width="1011" height="97"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="border-color:#CC1C1C;" colspan="2"&gt;&lt;span style="font-family:inherit;font-size:150%;"&gt;&lt;strong&gt;&lt;span class="TextRun SCXW21549198 BCX0" lang="EN-US"&gt;&lt;span class="NormalTextRun SCXW21549198 BCX0"&gt;&lt;span class="TextRun SCXW196477406 BCX0" lang="EN-US"&gt;&lt;span&gt;10. Do not grant Super User Identity&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Severity&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:inherit;"&gt;1&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Info&lt;/td&gt;
&lt;td&gt;Never use GrantIdentity method with Super User identity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:150px;"&gt;Examples&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style="background-color:#ff0000;"&gt;&lt;/span&gt;&lt;/p&gt;
Use any (new or existing) other identity (preferably without members) which has necessary access to required data and temporary grant it during business logic to perform operations which require additional access rights.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Facts&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;GrantIdentity call grants permission until they are revoked or right after server method execution.&lt;/li&gt;
&lt;li&gt;Granting Super User identity may lead to unintentional exposing of secure data to user.&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Info&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;A good example of best practices is &amp;lsquo;Aras PLM&amp;rsquo; identity in PLM package which is granted only during workflow process to operate Parts and Documents. It doesn&amp;rsquo;t expose any other access than necessary.&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;&lt;a id="Avoid-using-SQL-operations"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table width="1011" height="97"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="border-color:#CC1C1C;" colspan="2"&gt;&lt;span style="font-family:inherit;font-size:150%;"&gt;&lt;strong&gt;&lt;span class="TextRun SCXW21549198 BCX0" lang="EN-US"&gt;&lt;span class="NormalTextRun SCXW21549198 BCX0"&gt;&lt;span class="TextRun SCXW196477406 BCX0" lang="EN-US"&gt;&lt;span&gt;11. Avoid using SQL operations&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Severity&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:inherit;"&gt;2&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Info&lt;/td&gt;
&lt;td&gt;Instead of SQL use IOM API as much as possible&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:150px;"&gt;Examples&lt;/td&gt;
&lt;td&gt;Problem related to update of LifeCycle state of an item with SQL. In this case logic of transition between states (events/permissions update/etc.) isn&amp;rsquo;t executed which might corrupt database.
&lt;p&gt;&lt;span style="background-color:#ff0000;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Facts&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;SQL operations bypass access validations.&lt;/li&gt;
&lt;li&gt;SQL operations don&amp;rsquo;t trigger on(Add/Update/Delete/Promote/etc.) events and any server-side logic related to these actions.&lt;/li&gt;
&lt;li&gt;SQL operations skip update on Innovator Cache (Insert/Update/Delete operations).&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;&lt;a id="Innovator-methods-should-have-proper-execution-permissions"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table width="1011" height="97"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="border-color:#CC1C1C;" colspan="2"&gt;&lt;span style="font-family:inherit;font-size:150%;"&gt;&lt;strong&gt;&lt;span class="TextRun SCXW21549198 BCX0" lang="EN-US"&gt;&lt;span class="NormalTextRun SCXW21549198 BCX0"&gt;&lt;span class="TextRun SCXW196477406 BCX0" lang="EN-US"&gt;&lt;span&gt;12. Innovator methods should have proper execution permissions&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Severity&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:inherit;"&gt;2&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Info&lt;/td&gt;
&lt;td&gt;Always make sure that execution of a method allowed only for designated users&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:150px;"&gt;Examples&lt;/td&gt;
&lt;td&gt;&lt;img alt=" " src="/resized-image/__size/320x240/__key/communityserver-wikis-components-files/00-00-00-00-44/execution_5F00_permission_5F00_1.png" /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Facts&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;It is important to make sure that only designated users can execute methods which manipulate data with granted identities to avoid security vulnerabilities.&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Info&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;By default, execution is allowed to World identity (until 11.0 SP12). Administrators after 11.0 SP12&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;&lt;a id="Wisely-use-returnMode-on-get-AML-request"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table width="1011" height="97"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="border-color:#CC1C1C;" colspan="2"&gt;&lt;span style="font-family:inherit;font-size:150%;"&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;"&gt;&lt;span class="TextRun SCXW21549198 BCX0" lang="EN-US"&gt;&lt;span class="NormalTextRun SCXW21549198 BCX0"&gt;&lt;span class="TextRun SCXW196477406 BCX0" lang="EN-US"&gt;&lt;span&gt;13. Wisely use returnMode on get AML request&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12px;"&gt;Severity&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:inherit;"&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;"&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12px;"&gt;Info&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12px;"&gt;Use returnMode attribute in case of pagination or count request to improve performance&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:150px;"&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12px;"&gt;Examples&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12px;"&gt;Without returnMode=&amp;rsquo;itemsOnly&amp;rsquo;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12px;"&gt;&lt;img alt=" " src="/resized-image/__size/320x240/__key/communityserver-wikis-components-files/00-00-00-00-44/returnmode1.png" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12px;"&gt;With returnMode=&amp;rsquo;itemsOnly&amp;rsquo;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12px;"&gt;&lt;img alt=" " src="/resized-image/__size/320x240/__key/communityserver-wikis-components-files/00-00-00-00-44/returnmode2.png" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12px;"&gt;With returnMode=&amp;#39;countOnly&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12px;"&gt;&lt;img alt=" " src="/resized-image/__size/320x240/__key/communityserver-wikis-components-files/00-00-00-00-44/returnmode3.png" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;Item part = dal.NewItem(&amp;quot;Part&amp;quot;, &amp;quot;get&amp;quot;);
// set properties criteria
part.setAttribute(&amp;quot;returnMode&amp;quot;, &amp;quot;countOnly&amp;quot;);

part = dal.ApplyItem(part);
// some validations

XmlNode itemMax = part.dom.SelectSingleNode(&amp;quot;.//Message/event[@name=&amp;#39;itemmax&amp;#39;]/@value&amp;quot;);
int itemsCount = int.Parse(itemMax.Value);
//...&lt;/pre&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12px;"&gt;Facts&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12px;"&gt;In case you use returnMode=&amp;rsquo;itemsOnly&amp;rsquo; with pagination &amp;ndash; server will not send count request to DB to retrieve max count of items for current request. Without pagination usage count request isn&amp;rsquo;t sent to DB.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12px;"&gt;In case you use returnMode=&amp;rsquo;countOnly&amp;rsquo; &amp;ndash; server will send only count request to DB.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12px;"&gt;Info&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12px;"&gt;Improves performance (less requests are sent to DB)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;&lt;a id="Use-client-side-cache"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table width="1011" height="97"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="border-color:#CC1C1C;" colspan="2"&gt;&lt;span style="font-family:inherit;font-size:150%;"&gt;&lt;span class="TextRun SCXW21549198 BCX0" lang="EN-US"&gt;&lt;span class="NormalTextRun SCXW21549198 BCX0"&gt;&lt;span class="TextRun SCXW196477406 BCX0" lang="EN-US"&gt;&lt;span data-contrast="auto"&gt;&lt;b&gt;14. Use client-side cache to get Variable values instead of requesting them from the server.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Severity&lt;/td&gt;
&lt;td&gt;&lt;span&gt;Mandatory&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Info&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;&lt;span&gt;Use the client-side cache to get Variables instead of calling the server. This approach reduces the number of requests from Client to Server, improving the UI experience and performance. If cache-enabled items are not already in the cache, you can get them the first time from the server, and they will be automatically cached.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:150px;"&gt;Examples&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style="background-color:#ff0000;"&gt;Wrong way:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;var commandsEnabled = false; 
var commandsVarItem = aras.getItemFromServerByName(&amp;quot;Variable&amp;quot;, &amp;quot;VariableName&amp;quot;, &amp;quot;value,default_value&amp;quot;);
if(commandsVarItem)
{
    var value = commandsVarItem.getProperty(&amp;quot;value&amp;quot;) || commandsVarItem.getProperty(&amp;quot;default_value&amp;quot;);
    commandsEnabled = !(value === &amp;quot;0&amp;quot;); 
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#99cc00;"&gt;Correct way:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;var commandsEnabled = false;
var variableName = &amp;quot;VariableName&amp;quot;;
var commandsVarItem = aras.itemsCache.getItemByXPath(`/Innovator/Items/Item[@type=&amp;quot;Variable&amp;quot; and id[@keyed_name=&amp;quot;${variableName}&amp;quot;]]`) || aras.getItem(&amp;#39;Variable&amp;#39;, `id[@keyed_name=&amp;quot;${variableName}&amp;quot;]`, `&amp;lt;name&amp;gt;${variableName}&amp;lt;/name&amp;gt;`, 0, undefined, &amp;#39;value,default_value&amp;#39;);
if (commandsVarItem)   
{
   var value = aras.getItemProperty(commandsVarItem, &amp;quot;value&amp;quot;) || aras.getItemProperty(commandsVarItem, &amp;quot;default_value&amp;quot;);
   commandsEnabled = !(value === &amp;quot;0&amp;quot;);
}&lt;/pre&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Facts&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style="font-family:inherit;"&gt;&lt;span&gt;It is preferable to use cached value access rather than making a client-server trip, particularly when the latency is high.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family:inherit;"&gt;&lt;span&gt;Using the Aras Innovator client-side cached value can significantly improve value access time&lt;/span&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Exception&lt;/td&gt;
&lt;td&gt;
&lt;ul&gt;
&lt;li&gt;None&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Tests</title><link>https://www.aras.com/community/subscriber-portal/training/w/development-best-practices/696/tests</link><pubDate>Fri, 25 Jun 2021 14:15:48 GMT</pubDate><guid isPermaLink="false">916d3f7e-8ddc-42f8-8d45-380822f51406:b98185f6-03b8-4c7e-a805-ffabe9d4584a</guid><dc:creator>ConnieBurke</dc:creator><description>&lt;ul&gt;
&lt;li&gt;&lt;span style="font-family:inherit;"&gt;&amp;nbsp;&lt;a href="#integration-tests"&gt;Integration Tests&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family:inherit;"&gt;&amp;nbsp;&lt;a href="#selenium-tests"&gt;Selenium Tests&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:inherit;"&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;&lt;/span&gt;&amp;nbsp;&lt;a id="integration-tests"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;table width="1011" height="97"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="border-color:#CC1C1C;" colspan="2"&gt;&lt;span style="font-family:inherit;font-size:150%;"&gt;&lt;strong&gt;&lt;span class="TextRun SCXW21549198 BCX0" lang="EN-US"&gt;&lt;span class="NormalTextRun SCXW21549198 BCX0"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW21549198 BCX0" lang="EN-US"&gt;&lt;span class="NormalTextRun SCXW21549198 BCX0"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW21549198 BCX0" lang="EN-US"&gt;&lt;span class="NormalTextRun SCXW21549198 BCX0"&gt;&lt;span class="TextRun SCXW196477406 BCX0" lang="EN-US"&gt;&amp;nbsp;Integration Tests&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style="font-family:inherit;"&gt;Severity&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:inherit;"&gt;1&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style="font-family:inherit;"&gt;Info&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;a title="Integration Tests Best Practices" href="/community/subscriber-portal/training/w/taf-enablement/713/integration-test-best-practices"&gt;Common Integration Tests Best Practices&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;&lt;/span&gt;&amp;nbsp;&lt;a id="selenium-tests"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;table width="1011" height="97"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="border-color:#CC1C1C;" colspan="2"&gt;&lt;span style="font-family:inherit;font-size:150%;"&gt;&lt;strong&gt;&lt;span class="TextRun SCXW21549198 BCX0" lang="EN-US"&gt;&lt;span class="NormalTextRun SCXW21549198 BCX0"&gt;2&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW21549198 BCX0" lang="EN-US"&gt;&lt;span class="NormalTextRun SCXW21549198 BCX0"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW21549198 BCX0" lang="EN-US"&gt;&lt;span class="NormalTextRun SCXW21549198 BCX0"&gt;&lt;span class="TextRun SCXW196477406 BCX0" lang="EN-US"&gt;&amp;nbsp;Selenium Tests&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style="font-family:inherit;"&gt;Severity&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:inherit;"&gt;1&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style="font-family:inherit;"&gt;Info&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;a title="SeleniumTests Best Practices" href="/community/subscriber-portal/training/w/taf-enablement/659/web-ui-selenium-layer-tests"&gt;Common Selenium Tests Best Practices&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Add Column Sets and Group Box</title><link>https://www.aras.com/community/subscriber-portal/training/w/responsive-forms/1013/add-column-sets-and-group-box</link><pubDate>Wed, 29 Nov 2023 20:15:07 GMT</pubDate><guid isPermaLink="false">916d3f7e-8ddc-42f8-8d45-380822f51406:2c3d80bd-18e9-4314-a9e5-61bab5bd7497</guid><dc:creator>Juan Leach</dc:creator><description>&lt;h2 id="mcetoc_1hgeblpue0"&gt;Setting Up Column Sets&lt;/h2&gt;
&lt;p&gt;The journey begins on the blank canvas pane of the form designer, where you can add Column Sets. You have options for 2, 3, or 4 Column Sets, each offering a different layout dynamic. When adding columns to an existing set, simply drag the &amp;quot;Column&amp;quot; field to your desired spot.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.aras.com/community/cfs-file/__key/communityserver-wikis-components-files/00-00-00-00-66/Setting-Up-Column-Sets.mp4"&gt;www.aras.com/.../Setting-Up-Column-Sets.mp4&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1hgeblpue1"&gt;Customizing for Different Screen Sizes&lt;/h2&gt;
&lt;p&gt;It&amp;#39;s essential to consider how your form will appear on different devices. The &amp;#39;Wrap Columns on Small Display&amp;#39; option allows columns to stack vertically on smaller screens, maintaining readability and user interaction.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:482px;max-width:857px;" alt=" " height="482" src="/community/resized-image/__size/1714x964/__key/communityserver-wikis-components-files/00-00-00-00-66/Customizing-for-Different-Screen-Sizes.png" width="857" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1hgeblpue2"&gt;Incorporating Group Boxes&lt;/h2&gt;
&lt;p&gt;Group Boxes serve as visual containers for related form fields. Drag and drop these into your form layout, and then place the desired columns inside them. This helps in organizing the form and enhancing user navigation.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.aras.com/community/cfs-file/__key/communityserver-wikis-components-files/00-00-00-00-66/Incorporating-Group-Boxes.mp4"&gt;www.aras.com/.../Incorporating-Group-Boxes.mp4&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1hgeblpue3"&gt;Columns Adjustments&lt;/h2&gt;
&lt;p&gt;Once your columns and group boxes are in place, you can fine-tune each element. Adjustments include setting the name, ratio, and the min and max widths of the columns to ensure they fit perfectly within your form&amp;#39;s design.&lt;/p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="95"&gt;
&lt;p&gt;&lt;strong&gt;Ratio&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="399"&gt;
&lt;p&gt;Space each column occupies relative to others in terms of width. For instance, a column ratio of &amp;quot;2:1&amp;quot; between two columns means that one column is twice as wide as the others.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="95"&gt;
&lt;p&gt;&lt;strong&gt;Min Width&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="399"&gt;
&lt;p&gt;Minimum width of the column in pixels, used when screen is reduced horizontally.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span&gt;    	    	        &lt;div style="padding: 1em; margin: 1em 0; color: #444; background-color: #fff; border: solid 1px #ddd;"&gt;
	    	        You can navigate up on the hierarchy of Form &amp;gt; Column set/group box &amp;gt; column &amp;gt; Field using the clickable link on the top of the Detailed Pane.

An example of a clickable link: Column Set 0 in the screenshot below.
	    &lt;/div&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:482px;max-width:857px;" alt=" " src="/community/resized-image/__size/1714x964/__key/communityserver-wikis-components-files/00-00-00-00-66/Columns-Adjustments.png" /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>ACE Presentations</title><link>https://www.aras.com/community/subscriber-portal/training/w/ace-presentations</link><pubDate>Tue, 02 May 2023 20:19:23 GMT</pubDate><guid isPermaLink="false">916d3f7e-8ddc-42f8-8d45-380822f51406:15678829-a2e5-4f46-aede-833a67f86a8c</guid><dc:creator>ConnieBurke</dc:creator><description>&lt;p&gt;The Aras Training Team provided numerous hands-on, interactive training sessions on various topics at ACE over the last few years. Click on the corresponding year to download the PDFs that were presented during the instructor-led sessions at ACE.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>拡張チーム</title><link>https://www.aras.com/community/subscriber-portal/w/user-guide-jp/1038/page</link><pubDate>Fri, 01 Dec 2023 18:53:00 GMT</pubDate><guid isPermaLink="false">916d3f7e-8ddc-42f8-8d45-380822f51406:bbaade6e-2ea4-48e4-89c2-1adc50c7c2d2</guid><dc:creator>Tom Semeraro</dc:creator><description>&lt;p&gt;実装パートナーと連携している場合、そのパートナーをサポートチームに参加させて、サポートインシデントを表示する、コメントを追加する、新しいサポートインシデントを作成する、サポートインシデントに対応する、といった作業をパートナーが行えるようにしたいときがあります。組織外の他のユーザーをサポートチームに招待するには、組織のポータル管理者が、その個人を外部サポートチームメンバーとして追加します。&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Web ページの右上隅のプロフィールアイコンで、プロフィールの下の「アカウント」を選択し、「サポートアクセス」タブをクリックします。「拡張チームにユーザーを追加」ボタンを押します。ダイアログウィンドウが開きますので、ここに、拡張サポートチームに追加する個人のメールアドレスを入力します。追加する全員のメールアドレスを入力したら、「次へ」を押します。利用規約を確認し、「同意して保存」をクリックします。組織の拡張サポートチームに追加された各ユーザーに、その旨がメールで通知されます。&amp;nbsp;&lt;/p&gt;
&lt;p&gt;外部サポートチームメンバーを追加しているときに問題が発生した場合は、以下の方法を試してみてください。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;このメールアドレスが組織に関連付けられている場合。&lt;/strong&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;「チーム」タブの「チームを招待」アクションを使用して、この個人を社内チームに招待してください。メールアドレスが組織に関連付けられていないと思われる場合は、アカウント所有者に連絡して、このドメインの競合を解決してください。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;サポートユーザーが多すぎる場合&lt;/strong&gt;&lt;strong&gt; - Aras &lt;/strong&gt;&lt;strong&gt;サブスクライバーは、&lt;/strong&gt;&lt;strong&gt;Aras &lt;/strong&gt;&lt;strong&gt;サポートに直接連絡できる管理者&lt;/strong&gt;&lt;strong&gt; + &lt;/strong&gt;&lt;strong&gt;サポートユーザーとして最大&lt;/strong&gt;&lt;strong&gt; 10 &lt;/strong&gt;&lt;strong&gt;人を設定できます。&lt;/strong&gt;&amp;nbsp;外部チームのメンバーも、この制限の合計サポートユーザー数にカウントされます。社内サポートチームメンバーと拡張サポートチームメンバーの合計数が 10 人を超えないようにしてください。&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aras &lt;/strong&gt;&lt;strong&gt;ポータルアカウントを持っていない個人であるため、拡張チームのメンバーとして追加できない。&lt;/strong&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;この人に &lt;a href="/subscriber-portal/p/new-account"&gt;Aras Portal アカウントを作成&lt;/a&gt;してもらいます。その後、Aras ポータルにアクセスできるようになってから再度試してもらいます。&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;この個人がパートナーとして適切に設定されていない。&lt;/strong&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;この問題を解決するためには、該当する個人からアカウント所有者または&amp;nbsp;&lt;a href="mailto:partners@aras.com"&gt;partners@aras.com&lt;/a&gt;&amp;nbsp;に連絡してもらいます。&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;上記の方法を試しても、拡張サポートチームメンバーの追加に関する問題が解決しない場合は、&lt;a href="/subscriber-portal/w/user-guide/711/subscriber-portal-help"&gt;ポータルのフィードバック&lt;/a&gt;からご連絡ください。トラブルシューティングをお手伝いするために、できるだけ早く担当者から連絡いたします。&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>チームメンバーの管理</title><link>https://www.aras.com/community/subscriber-portal/w/user-guide-jp/1037/page</link><pubDate>Fri, 01 Dec 2023 18:52:23 GMT</pubDate><guid isPermaLink="false">916d3f7e-8ddc-42f8-8d45-380822f51406:960b2651-49e7-4515-b271-6e82e59b6250</guid><dc:creator>Tom Semeraro</dc:creator><description>&lt;p&gt;ポータルには 3 つのサブスクライバーロールがあります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;メンバー&lt;/strong&gt;&amp;nbsp;-&amp;nbsp; ポータルメンバーは、すべてのお知らせ、オンライントレーニングリソース、製品ドキュメント、アップグレード計画情報にアクセスできます。コミュニティフォーラムに参加したり、Aras ニュースレター、サポート速報、Aras イベントなどにサインアップするようアカウントを設定したりすることもできます。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;サポート&lt;/strong&gt;&amp;nbsp;-&amp;nbsp;サポート担当者ロールでは、サポートインシデントを表示、作成、更新するだけでなく、サブスクリプションライセンスキーを表示することも可能です。注：サポート担当者として指定できる人数は 1 サブスクライバーあたり最大 10 人です。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;管理者&lt;/strong&gt;&amp;nbsp;-&amp;nbsp;ポータル管理者ロールでは、サブスクライバーチームの維持管理を支援できます。&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;サブスクライバーアカウントのポータル管理者は、簡単な手順で、組織内の 1 人または複数の人を Aras サブスクライバーポータルのメンバーになるように招待できます。「削除」アクションを使用して、組織に所属しなくなったメンバーを削除することもできます。&lt;br /&gt; &lt;br /&gt; ポータル管理者の場合、Web ページ右上隅の「プロフィール」 &amp;gt; 「アカウント」にある「アカウント」ページに「&lt;strong&gt;チームを招待&lt;/strong&gt;」アクションがあります。&amp;nbsp;&amp;nbsp; メンバーを、サブスクライバー組織のサポート担当者として指定することもできます。&amp;nbsp;&lt;/p&gt;
&lt;p&gt;ポータルメンバーになるようにユーザーを招待するには、複数のメールアドレスをコンマで区切って選択し、「チームを招待」ボタンを使用して追加します。ポータルに参加するための招待を受け取ったユーザーがユーザー情報を入力すると、新規ユーザーそれぞれにログイン情報が届きます。&lt;/p&gt;
&lt;p&gt;組織がポータル管理者を変更または追加したい場合は、サブスクリプションページに記載されている Aras/パートナーアカウント担当者に連絡してください。&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>他のチームメンバーを招待する</title><link>https://www.aras.com/community/subscriber-portal/w/user-guide-jp/1036/page</link><pubDate>Fri, 01 Dec 2023 18:51:43 GMT</pubDate><guid isPermaLink="false">916d3f7e-8ddc-42f8-8d45-380822f51406:07f3a62b-60ee-48b8-8be3-822b0544f25f</guid><dc:creator>Tom Semeraro</dc:creator><description>&lt;p&gt;組織の他のユーザーをサブスクライバーポータルに招待するには、サブスクライバーポータルのログインページに記載されている、アカウント申請のためのリンクを使用します。&lt;/p&gt;
&lt;p&gt;ポータル管理者であれば、ポータルメンバーになるようチームメンバーを招待できます。Web ページの右上隅のプロフィールアイコンで、プロフィールの下にある「&lt;strong&gt;アカウント&lt;/strong&gt;」を選択し、複数のメールアドレスをコンマで区切って選択した後、「チームを招待」ボタンを使用して追加します。&amp;nbsp;&amp;nbsp;&amp;nbsp; ポータルに参加するための招待を受け取ったユーザーがユーザー情報を入力すると、新規ユーザーそれぞれにログイン情報が届きます。&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Aras に関する最新情報を常に受け取るには</title><link>https://www.aras.com/community/subscriber-portal/w/user-guide-jp/1035/aras</link><pubDate>Fri, 01 Dec 2023 18:50:00 GMT</pubDate><guid isPermaLink="false">916d3f7e-8ddc-42f8-8d45-380822f51406:bbf04fd7-842e-4359-ac19-fa8fcd2dcb5f</guid><dc:creator>Tom Semeraro</dc:creator><description>&lt;p&gt;Aras に関する最新情報を常にお受け取りいただくためのメールリストをいくつかご用意しています。ご自身に合ったオプションを選択してください。これらのメール配信は、各メールまたはこのリストからいつでも停止できます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;お近くで今後開催される Aras イベントについて確認する -&amp;nbsp;&lt;strong&gt;ACE&lt;/strong&gt;&lt;strong&gt;、&lt;/strong&gt;&lt;strong&gt;Aras Connect&lt;/strong&gt;&lt;strong&gt;、その他のイベント&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Aras からの最新情報の概要を毎月入手する &amp;ndash;&amp;nbsp;&lt;strong&gt;ニュースレター、製品リリース、プレスリリース&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Aras サポートからの時間的制約のある重要なソフトウェア更新を常に最新の状態に保つ &amp;ndash;&amp;nbsp;&lt;strong&gt;サポート速報アップデート&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;数週間ごとに開催されるウェビナーで実際に動いている Aras Innovator を見る &amp;ndash;&amp;nbsp;&lt;strong&gt;ソートリーダーシップ（&lt;/strong&gt;&lt;strong&gt;eBook&lt;/strong&gt;&lt;strong&gt;、デモシリーズ、ウェビナー）&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>サブスクライバーポータルのユーザー管理</title><link>https://www.aras.com/community/subscriber-portal/w/user-guide-jp/1034/page</link><pubDate>Fri, 01 Dec 2023 18:49:06 GMT</pubDate><guid isPermaLink="false">916d3f7e-8ddc-42f8-8d45-380822f51406:ca298d7e-6750-460b-95fb-776d33e6a570</guid><dc:creator>Tom Semeraro</dc:creator><description>&lt;p&gt;サブスクライバーポータルでのユーザーの管理に関するトピックです。&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>機能のライセンスをインストールする方法</title><link>https://www.aras.com/community/subscriber-portal/w/user-guide-jp/1032/page</link><pubDate>Fri, 01 Dec 2023 18:47:18 GMT</pubDate><guid isPermaLink="false">916d3f7e-8ddc-42f8-8d45-380822f51406:2fa598df-0a9a-426f-ba48-825ff1efd972</guid><dc:creator>Tom Semeraro</dc:creator><description>&lt;h3&gt;アクティベーションキーを取得したら、以下の手順で機能のライセンスをインストールします。&amp;nbsp;&amp;nbsp;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Innovator に管理者としてログインします。&lt;/li&gt;
&lt;li&gt;右上隅にある「ユーザーメニュー」ボタンをクリックします。次のようなドロップダウンメニューが表示されます。&lt;/li&gt;
&lt;li&gt;「&lt;strong&gt;機能を有効化する&lt;/strong&gt;」を選択します。 次のようなダイアログボックスが表示されます。&lt;/li&gt;
&lt;li&gt;取得したアクティベーションキーを貼り付け、「&lt;strong&gt;機能を有効化する&lt;/strong&gt;」をクリックします。&lt;br /&gt; 次のような完了メッセージがポップアップ表示されます。&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;詳細については、「Aras - インストールガイド」の第 6 章を参照してください。&lt;br /&gt; ライセンスに関する質問または問題については、&lt;a href="mailto:licenses@aras.com"&gt;licenses@aras.com&lt;/a&gt;までご連絡ください&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>サブスクリプションライセンスにアクセスするには</title><link>https://www.aras.com/community/subscriber-portal/w/user-guide-jp/1031/page</link><pubDate>Fri, 01 Dec 2023 18:46:32 GMT</pubDate><guid isPermaLink="false">916d3f7e-8ddc-42f8-8d45-380822f51406:c09eedbb-3354-4e72-9927-0e615d91c28e</guid><dc:creator>Tom Semeraro</dc:creator><description>&lt;p&gt;Aras のサブスクリプションでは、例えばビジュアルコラボレーション のような製品開発のための管理機能や、エンタープライズ検索や一括インポートツールのような Aras Innovator へのマイグレーションを支援する機能を使用できます。&lt;/p&gt;
&lt;p&gt;サブスクライバーポータルには、Aras 環境にインストールするための最新機能ライセンスキー一覧があります。「サブスクリプション」、「ライセンス」の順に選択します。&amp;nbsp;&lt;/p&gt;
&lt;p&gt;ライセンスのインストールに関する問題またはその他の質問がある場合は、licenses@aras.com までご連絡ください。&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Aras Innovator ソフトウェアへのアクセス（FTP）について</title><link>https://www.aras.com/community/subscriber-portal/w/user-guide-jp/1030/aras-innovator-ftp</link><pubDate>Fri, 01 Dec 2023 18:45:49 GMT</pubDate><guid isPermaLink="false">916d3f7e-8ddc-42f8-8d45-380822f51406:77d430ed-ca7d-4c94-b3d2-6640d6b80128</guid><dc:creator>Tom Semeraro</dc:creator><description>&lt;p&gt;サブスクライバーは、Aras FTP サイト経由ですべての Aras ソフトウェアおよび製品ドキュメントにアクセスできます。&lt;/p&gt;
&lt;p&gt;各サブスクライバーが、リリースの CD イメージが収納された ftp フォルダにある Aras ソフトウェアにアクセスできます。これには、すべてのプラットフォームリリースと Aras アプリケーションが含まれます。&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Aras では、FileZilla FTP クライアントを使用して Aras FTP を操作することをお勧めします。&amp;nbsp;&lt;/p&gt;
&lt;p&gt;注：FTP 領域を使用して、特定のサポート調査または Aras アップグレードに関する情報を Aras サポートに送信することもできます。&lt;br /&gt; &lt;br /&gt; さらに質問がある場合、またはパスワードのリセットが必要な場合は、&lt;a href="mailto:Support@aras.com"&gt;Support@aras.com&lt;/a&gt; までメールでご連絡ください&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Aras サブスクリプションへのアクセス</title><link>https://www.aras.com/community/subscriber-portal/w/user-guide-jp/1029/aras</link><pubDate>Fri, 01 Dec 2023 18:45:07 GMT</pubDate><guid isPermaLink="false">916d3f7e-8ddc-42f8-8d45-380822f51406:af303aaf-c796-48e8-9547-66c4ce5a3ab3</guid><dc:creator>Tom Semeraro</dc:creator><description>&lt;p&gt;Aras サブスクリプションのサービスは、ビジネスに不可欠なプロセスと製品データを、Aras ソリューションを使って管理している組織向けに設計されています。こうしたサービスによって、導入期間を短縮し、組織のビジネスニーズにより迅速に対応できます。貴社の Aras Innovator サブスクリプションには、サブスクライバーポータルに表示されているサービスと現在のサブスクリプション期間が含まれます。&lt;/p&gt;
&lt;p&gt;「サブスクリプション」ページには以下の情報が表示されます。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;サブスクリプション&lt;/strong&gt;&amp;nbsp;&amp;ndash; サブスクリプションサービスの SKU 番号&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;説明&lt;/strong&gt;&amp;nbsp;&amp;ndash; サービスの簡単な説明（Aras Innovator Premier Subscription など）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;数量&lt;/strong&gt;&amp;nbsp;- 以下に示す Aras Premier サブスクリプションの数量は、指定されたユーザー数に対するものです。CAD コネクタの数量は、同時ユーザー数に対するものです。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;開始日と終了日&lt;/strong&gt;&amp;nbsp;&amp;ndash; 現在および将来のサブスクリプション期間の開始日と終了日です。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ステータス&lt;/strong&gt;&amp;nbsp;&amp;ndash; このサブスクリプションのステータス&lt;/p&gt;
&lt;p&gt;アクティブ - サブスクリプションサービスが有効です。&lt;/p&gt;
&lt;p&gt;保留中 - 次のサブスクリプション期間が計画されていますが、サブスクライバーからこのサービス期間に関する確約済み発注書または同様の契約を受け取っていません。&lt;/p&gt;
&lt;p&gt;確約済み - 次のサブスクリプション期間が確約され、サブスクライバーからこのサービス期間の発注書または同様の契約を受け取っています。&lt;/p&gt;
&lt;p&gt;サブスクリプションについてご不明な点がありましたら、&lt;a href="mailto:info@aras.com"&gt;info@aras.com&lt;/a&gt;&amp;nbsp;までメールでお問い合わせください。&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>