Skip to content

Contact us

    Talk to our Experts


    +1 920 303 0470
    info@smart-is.com 1302 S Main ST , Oshkosh , WI 54902-6518

    Managing Long Running Jobs in JDA/Blue Yonder

    Efficient Strategies: Managing Long Running Jobs in JDA/Blue Yonder with RedPrairie Consultants and Blue Yonder JDA Expert

    By Saad Ahmad, Executive Vice President at Smart IS International

    We often have jobs that perform long tasks. There is no easy way to see the work they are performing at a given time. The only option is to look at MOCA Console or another similar view which provides a low level window into the MOCA command or SQL that is being executed. Historical information is not easy to view either.

    While this solution describes it in the context of JDA/Blue Yonder — the concept is universal and can be used in any solution where long running operations are implemented.


    Our Solution

    At Smart IS we have developed a universal approach to handle this problem which we apply in all of our solutions including JDA/Blue Yonder jobs. We view any long-running operation as follows:

    • Each instance of execution is a job
    • The job executes one or more modules
    • The module executes one or more actions
    • Start and stop of jobmodule, and action is recorded with timestamp in a separate commit context so that it is visible outside the transaction right way.
    • In case of an error the error information is recorded as well.
    • All of this information is kept in a database table so it can be referenced later
    • DDAs are available so that end users can view this information.

    A table called usr_ossi_job_log records this information. It has the following structure:

    So, as a job progresses it keeps updating this table in a separate commit context. This allows the users to know exactly how far along this instance of the job is and given that we have historical data we can reasonably predict when the job will end.


    Making It Happen!

    Tomake it all come together we have created a set of MOCA commands and functions that allow our code to be simple while providing information to this table at the same time. A typical job will be structured as follows:

    /* 
    * Adds a row to the table with new job#, job-id, additional information, 
    * and who information. The start date/time is logged as well. module 
    * and action are set to % (literal). Commits this data in a separate 
    * commit context 
    */ 
    publish data 
    where uc_ossi_job_seq = ossi__register_job ( 'JOB-ID, 'SOME-INFO',     'WHO-INFO' ) 
    | 
    try 
    { 
    /* 
    * Some step(s) during the job 
    * Adds row to the table for the job#. gets a new module# and 
    * returns that. Row has module name and also additional 
    * information as needed. Additional. Action is set to 
    * % (literal). Additional Information can come in handy 
    * to for example to log when we are processing several 
    * rows of a domain, like processing orders in a wave. 
    * You could log something like 1/n there so that you can see 
    * how far along the job is. This is committed in a separate 
    * commit context. 
    */ 
    publish data 
    where uc_ossi_module_seq = ossi__register_module ( @uc_ossi_job_seq, 'MODULE NAME', 'MORE DATA' ) 
    | 
    try 
    { 
    /* 
    * This module will have 1 or more actions - each coded like 
    * We do not have to use action concept - this becomes useful 
    * if we can divide a module further. For example module could 
    * be an order and action could be pick. Idea is same as module 
    * - here we can give action name and additional information 
    * Additional Information can be used to provide specific 
    * details and also 1/n type of data. This is committed in a 
    * separate commit context. 
    */ 
    publish data 
    where uc_ossi_action_seq = ossi__register_action ( 
    @uc_ossi_job_seq, @uc_ossi_module_seq, 
    'ACTION NAME', 'MORE DATA' ) 
    | 
    try 
    { 
    moca comamnds that do the work 
    } 
    finally 
    { 
    /* 
    * uc_ossi_job_seq, uc_ossi_module_seq. uc_ossi_action_seq are in scope * so that row 
    * is updated with timestamp and error information. 
    * This is committed in a separate commit context. 
    */ 
    complete ossi job log
    where uc_ossi_err_code = @? 
    and uc_ossi_err_descr = @! 
    } 
    } 
    finally 
    { 
    /* 
    * uc_ossi_job_seq and uc_ossi_module_seq are in scope so that row 
    * is updated with timestamp and error information. 
    * This is committed in a separate commit context. 
    */
    complete ossi job log
    where uc_ossi_err_code = @? 
    and uc_ossi_err_descr = @!
     } 
    } 
    finally 
    { 
    /* 
    * Updates the row in the table for the job itself (added in 
    * register of job). Sets end time and also error 
    * information if applicable. 
    * This is committed in a separate commit context. 
    */ 
    complete ossi job
    where uc_ossi_err_code = @?
    and uc_ossi_err_descr = @! 
    }

    As this job progresses through several actions we will be publishing the progress of the job to this table — so we will know exactly how far along it is. We will also know historically how long the job has taken and how long the various modules and actions have taken.

    The data structure is generic and will work for any long running operation.


    End User View

    The users can view all of the jobs in a simple to use front-end.

    First screen provides a drop-down to see all the jobs defined in the system


    Then it shows a view that indicates how many times the job has run and the times of the latest execution:

    By going to the Job Log Detail Display, we can see the progress of the latest execution. Here the users can see the progress of the currently executing job as well.

    To see previous executions, go to Job Executions tab

    Conclusion: RedPrairie Consultants and Blue Yonder JDA Expert

    The user can view all of the jobs using this approach. The data provided by this approach is extremely valuable for support. We can detect if a job is stuck and monitor the progress of long-running operations. We can easily predict when the job will end and can objectively determine if the performance has deteriorated. In the case of performance, we can pinpoint the exact operation that is the culprit.

    Originally published at saadwmsblog.blogspot.com.

    Leave a Reply

    Your email address will not be published. Required fields are marked *

    Recent Stories

    View All
    Blog Feature Image
    ForgeViu: Visual Experiences for an Intent-Centric Enterprise
    Jun 12, 2026

    Technology has a habit of making us believe that every new breakthrough renders everything that came before it obsolete. When television became mainstream, many predicted the end of radio. When e-commerce emerged, some predicted the end of physical retail. When smartphones arrived, there were predictions that desktop computing would become irrelevant. Reality is usually more

    Read More
    Beyond the Crawl: A Coding Agent for Proprietary Programming Languages
    May 17, 2026

    General-purpose coding models perform well on languages that are well-represented on the public internet. They fail predictably on proprietary or domain-specific languages: hallucinated identifiers, wrong call shapes, and confident reproduction of deprecated patterns. MOCA, the scripting language inside Blue Yonder’s Warehouse Management System, is one of those failure cases, the entire ecosystem (grammar, command catalog,

    Read More
    The Generalist Manifesto: Why “Broad Intelligence + Skill” Is the Future of AI
    May 08, 2026

    For the past couple of years, we’ve seen a massive push toward Specialized LLMs. The argument seems intuitive: if you need legal expertise, use a legal model. If you need medical expertise, use a medical model. Why rely on a “general” model when you can have one trained specifically for the task at hand? In

    Read More
    Safety by Ignorance vs Safety by Understanding: What the Claude–DoD Debate Is Really About
    Apr 03, 2026

    There is a growing debate in AI governance that is often framed as a dispute over “safeguards,” “alignment,” or “responsible AI.” A recent flashpoint involves models developed by Anthropic (notably Claude) and the U.S. Department of Defense, but the disagreement is deeper than any single vendor or contract. At its core, the debate is not

    Read More
    From Chat to Capability: Operationalizing Enterprise AI Intents
    Apr 02, 2026

    In earlier posts, I argued two related ideas: This post builds directly on those ideas and takes the next logical step. If intent is the real abstraction — and if enterprises need repeatable, governed intelligence — then the obvious question is: Where does intent actually live, and how does it execute? The Missing Layer: Intent

    Read More
    Enterprise Cognitive Intelligence, Without the Complexity
    Feb 17, 2026

      In our previous post, we showed how our MCP framework removes the friction from exposing system capabilities to AI. MCP solves access. Cognition requires meaning. Because enterprises don’t think in systems.They think in business concepts. The Limits of System-Level Intelligence Most MCP servers today expose a single system — ERP, WMS, OMS, planning engines —

    Read More
    From APIs to Intelligence: How Our MCP Framework Makes Any System AI-Ready
    Feb 17, 2026

    Everyone wants to “add AI” to their systems — but few succeed. Not because AI models aren’t powerful — they are. But because exposing enterprise systems to AI is still too hard. So for most teams, the friction is simply too high. A Useful Analogy: AI as a Researcher Think of AI as a researcher. At

    Read More
    F
    From System Silos to System Intelligence: The AI Shift Enterprises Cannot Afford to Ignore
    Dec 10, 2025

    Enterprises today operate in an environment where systems multiply, data sits fragmented, and real-time decisions depend on information scattered across platforms. The divide between organizations’ need for instant, secure, conversational access to enterprise intelligence and their reliance on siloed screens, complicated integrations, and manual reporting processes is increasing each year.   According to a survey report

    Read More
    Why Traditional Deployment Playbooks No Longer Keep Up with Modern Warehouses
    Oct 30, 2025

    Modern warehouses are evolving faster than the deployment practices that support them. What was once a predictable, linear, and manual deployment cycle has turned into a complex, high-stakes process that no longer fits the pace of operations. Traditional deployment playbooks were designed for slower systems with fewer moving parts. Today’s warehouses operate across multiple sites,

    Read More
    The Hidden Cost of Screen Development in Warehouse Reporting and the Solution
    The Hidden Cost of Screen Development in Warehouse Reporting and the Solution
    Oct 16, 2025

    Reporting sits at the core of every warehouse operation. It is the lens through which leaders make decisions, monitor performance, and anticipate challenges. Yet, behind the charts and dashboards lies a process that is often far more complex and costly than it should be. Screen development in warehouse reporting has become a silent drain on

    Read More