web
You’re offline. This is a read only version of the page.
close
Skip to main content

Announcements

News and Announcements icon
Community site session details

Community site session details

Session Id :
Microsoft Dynamics GP (Archived)

GP 2013 Fixed Asset Book Card takes 30 seconds to save after Upgrade

(0) ShareShare
ReportReport
Posted on by

When creating a book for an asset, after clicking save it takes 30 seconds for the car to save.  This began after upgrading from GP 2010 to GP 2013.  The same database on GP 2010 saves in a millisecond, but on GP 2013 takes over 30 seconds.  When creating a fixed asset General information card that has auto add book selected for three books it takes over 90 seconds to save.

Has anyone run into this before?

*This post is locked for comments

I have the same question (0)
  • Richard Wheeler Profile Picture
    75,852 Moderator on at

    Yes, we have seen this before and have dropped questions in this community and others and no one has responded. I will keep an eye on this to see if you get any responses. By the way, depreciation takes forever, as well.

  • Verified answer
    Community Member Profile Picture
    on at

    Richard,

    I identified the cause and a script to fix it.  I have sent my resolution to Microsoft Dynamics GP Tech Support and they have informed me that the have a very recent fix that is the same or similar that they are going to send me.  In order to use that you must be on SP2.  Also, he said a lot of the performance issues for FA in 2013 will be addressed in R2, which I believe is coming out this month.

    We also experienced performance issues with the upgrade.  Upgrading the FA Financial Detail table (FA00902) took 23 hours for this client and the total upgrade time was just under 24 hours.  Support says that will be addressed in R2 as well.

    The bottom line is that FA00902 table, which is also hit when you perform CRUD operations on the Fixed Assets Book table, needs to be optimized with additional indexes.  When I did that the response to CRUD (CReate Update and Delete) operations on that table were instantaneous even considering 9.5 million records in that table.  Without out the indexes it took 18 seconds per operation on a very beefy and speedy server with blade/san architecture.

    This could also explain why upgrading that table took such a long time.  If they were reading from that table (maybe even row by row) to transform it to the new schema and inserting new column data (like FA Doc Number), that could explain why it took 23 hours.

    You could hit up tech support for the fixes or wait until R2 to see if your issues are fixed.

  • Richard Wheeler Profile Picture
    75,852 Moderator on at

    Beratung, thank you very much for this input. Your thorough explanation will save us a lot of time.

  • Heather Roggeveen Profile Picture
    9,150 on at

    Just as an FYI - I have a client that has just upgraded to 2013 R2 who is experiencing this issue - so unless we missed something, nothing has changed.

    Found this post from Mahmoud that gave a renaming solution, but this particular client has thousands of assets - and they are about to hit year end.  Does anyone know any other fix?

  • Richard Wheeler Profile Picture
    75,852 Moderator on at

    Can someone from Microsoft chime in on this. I too thought this was address by correcting an index. Apparently not as other clients of mine are reporting the same issue.

  • Heather Roggeveen Profile Picture
    9,150 on at

    Hi Richard

    I heard from Microsoft yesterday and got the resolution.  I am just waiting for the client to confirm the issue is resolved in their live database.  MS said they will update this post with the details.  In the live system - the initial query that is run went from 17.5 minutes to run to .3 of a second!  Big difference.

    Cheers

    Heather

  • Suggested answer
    Thomas Newcomb Profile Picture
    1,810 on at

    Hi Richard,

    I just wanted to follow up on Heathers post as I was the Support Engineer that had assisted her. Generally the cause of the issue that was reported in this thread is due to the indexing of the FA00902 Table.

    We have seen some performance issues in GP 2013 when GP is calling the function, FA_GetNextFADocNumber, when there a large number of records in the FA00902 table.  This started occurring after upgrading to GP 2013, which makes sense, as the field that the function is working with was added in GP 2013.

    We have worked-up a resolution to this issue, logged under Quality Issue ID 76032. As a workaround, we have modified the FA_getnextfadocumentnumber function to force SQL to utilize the index created when selecting the maximum document number.

    Unfortunately I am only able to provide the SQL scripts through a support incident so we can keep track of document cases with this issue.

    Please let me know if I can provide any additional information!

    ~Thomas Newcomb

    ------------------------------------------

    Microsoft Dynamics GP Support

    ------------------------------------------

    This posting is provided "AS IS" with no warranties, and confers no rights

  • Community Member Profile Picture
    on at

    Thanks for the information.  We are experiencing the problem also.  It is taking about 3-5 minutes to save each asset addition.  I will open a support case with Microsoft to get this script.

    Joseph Guyton

    TrustHouse Services Group, Inc.

  • carolhwasha Profile Picture
    147 on at

    Hi Thomas, may you please forward the script to me. I am experiencing the same issue with my client and will be grateful if you can provide this soonest.

    Misheck

  • Community Member Profile Picture
    on at

    here is a script that we received from Microsoft to correct this.  I do not warranty this script nor assume any liability; but, it certainly worked for us.  you can test it on Fabrikam first.  

    --USE [TWO]

    go

    /****** Object:  UserDefinedFunction [dbo].[FA_GetNextFADocNumber]    Script Date: 2/27/2014 10:07:28 AM ******/

    SET ansi_nulls ON

    go

    SET quoted_identifier ON

    go

    ALTER FUNCTION [dbo].[Fa_getnextfadocnumber] (@IN_Source_Doc CHAR(11))

    returns CHAR(16)

    AS

     BEGIN

         DECLARE @prefix          CHAR(5),

                 @last_doc_number CHAR(16),

                 @fa_doc_number   CHAR(16)

         DECLARE @last_value INTEGER,

                 @new_value  BIGINT

         IF @IN_Source_Doc IN ( 'FAADD' )

           BEGIN

               SELECT @last_doc_number = Max(fa_doc_number)

               FROM   fa00902

    WITH (INDEX(FA00902_MSFT)) /* amelroe added index hint 02/27/2014 */

               WHERE  sourcdoc = 'FAADD'

               SELECT @prefix = 'FAADD'

           END

         IF @IN_Source_Doc IN ( 'FACHG', 'FACHG-R', 'FAMCH', 'FAMCH-R' )

           BEGIN

               SELECT @last_doc_number = Max(fa_doc_number)

               FROM   fa00902

    WITH (INDEX(FA00902_MSFT)) /* amelroe added index hint 02/27/2014 */

               WHERE  sourcdoc IN ( 'FACHG', 'FACHG-R', 'FAMCH', 'FAMCH-R' )

               SELECT @prefix = 'FACHG'

           END

         IF @IN_Source_Doc IN ( 'FADEP', 'FADEP-O', 'FADEP-R' )

           BEGIN

               SELECT @last_doc_number = Max(fa_doc_number)

               FROM   fa00902

    WITH (INDEX(FA00902_MSFT)) /* amelroe added index hint 02/27/2014 */

               WHERE  sourcdoc IN ( 'FADEP', 'FADEP-O', 'FADEP-R' )

               SELECT @prefix = 'FADEP'

           END

         IF @IN_Source_Doc IN ( 'FARET', 'FAMRT', 'FARET-P', 'FARET-PU', 'FARET-U'

                              )

           BEGIN

               SELECT @last_doc_number = Max(fa_doc_number)

               FROM   fa00902

    WITH (INDEX(FA00902_MSFT)) /* amelroe added index hint 02/27/2014 */

               WHERE  sourcdoc IN ( 'FARET', 'FAMRT', 'FARET-P', 'FARET-PU',

                                    'FARET-U' )

               SELECT @prefix = 'FARET'

           END

         IF @IN_Source_Doc IN ( 'FAXFR', 'FAMXF', 'FAMXF-C', 'FAXFR-C', 'FAXFR-P' )

           BEGIN

               SELECT @last_doc_number = Max(fa_doc_number)

               FROM   fa00902

    WITH (INDEX(FA00902_MSFT)) /* amelroe added index hint 02/27/2014 */

               WHERE  sourcdoc IN ( 'FAXFR', 'FAMXF', 'FAMXF-C', 'FAXFR-C',

                                    'FAXFR-P'

                                  )

               SELECT @prefix = 'FAXFR'

           END

         IF @IN_Source_Doc IN ( 'FASUM' )

           BEGIN

               SELECT @last_doc_number = Max(fa_doc_number)

               FROM   fa00902

    WITH (INDEX(FA00902_MSFT)) /* amelroe added index hint 02/27/2014 */

               WHERE  sourcdoc = 'FASUM'

               SELECT @prefix = 'FASUM'

           END

         SELECT @last_doc_number = Isnull(@last_doc_number, '')

         IF @last_doc_number <> ''

           BEGIN

               SELECT @last_value = (SELECT Cast(Substring(@last_doc_number, 6, 11)

                                                 AS

                                                 INTEGER))

               SELECT @new_value = @last_value + 100000000001

               SELECT @fa_doc_number = Rtrim(@prefix)

                                       + Ltrim(Substring(Str(@new_value, 12), 2, 11

                                       ))

           END

         ELSE

           BEGIN

               SELECT @fa_doc_number = CASE

                                         WHEN @IN_Source_Doc = ( 'FAADD' ) THEN

                                         'FAADD00000000001'

                                         WHEN @IN_Source_Doc IN

                                              ( 'FACHG', 'FACHG-R',

                                                'FAMCH',

                                                'FAMCH-R' ) THEN

                                         'FACHG00000000001'

                                         WHEN @IN_Source_Doc IN

                                              ( 'FADEP', 'FADEP-O',

                                                'FADEP-R'

                                              ) THEN

                                         'FADEP00000000001'

                                         WHEN @IN_Source_Doc IN (

                                              'FARET', 'FAMRT', 'FARET-P',

                                              'FARET-PU', 'FARET-U' )

                                       THEN 'FARET00000000001'

                                         WHEN @IN_Source_Doc IN (

                                              'FAXFR', 'FAMXF', 'FAMXF-C',

                                              'FAXFR-C', 'FAXFR-P' )

                                       THEN 'FAXFR00000000001'

                                         WHEN @IN_Source_Doc = ( 'FASUM' ) THEN

                                         'FASUM00000000001'

                                         ELSE ''

                                       END

           END

         RETURN( @fa_doc_number )

     END

    go  

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Season of Sharing Community Challenge Launch!

Jump in, show your community spirit, and win prizes!

Women in Power Builds Momentum

Expanding mentorship, skilling, and AI innovation

Congratulations to the May Top 10 Community Leaders

These are the community rock stars!

Leaderboard > 🔒一 Microsoft Dynamics GP (Archived)

#1
Dan Liebl Profile Picture

Dan Liebl 2

Last 30 days Overall leaderboard

Featured topics

Product updates

Dynamics 365 release plans