-
Recently active
I hope this message finds you well. I would like to log the event of an interface being opened. However, my understanding is that on the interface itself, unless an action such as clicking a button occurs, it is not possible to write a record or start a process model. When consulting ChatGPT, I received the following idea: Create a Web API on Appian that returns an image as the response and simultaneously saves a log. Place an image on the target interface and set the endpoint of the Web API created in (1) as the image source. As a result, when the interface is opened, the Web API in (1) is called, and the log is recorded. However, it seems that the function a!writeToDataStoreEntity does not get triggered inside the Web API. I have two questions and would appreciate your advice: What should I review to implement the above ChatGPT idea successfully? Are there alternative methods to log when an interface is opened? Thank you in advance for your kind advice.
Hi Team, I had 2 simple questions which I wanted to post here. Please help me if anyone has the answers : Context : You are given a list of CDT / Dictionary / Map with a few fields, eg : { { key: 12, val: "ABC" }, { key: 20, val: "DEF" }, { key: 30, val: "GHI" } } Problem statement : Get those CDTs which have key bw 10 & 25 My approaches : I had 2 approaches, both of which I have a roadblock I convert this to list to a data subset using toDataSubset function and then filter on this I create a rule which takes this `key` as an RI and then returns true / false based on condition. I will use this rule in the filter function and use wherecontains to filter out which matches our condition Questions : Now for the approach 1, I had a question : how do I filter this custom data subset ? because I only see queryEntity and queryRecord but nothing to query this custom dataset For approach 2 : is there a way we can eliminate the need of creating a differ
Hi Appian Team and Community, We’re designing a generic, audit-compliant task module to support multiple business processes—KYC, retail and corporate loan origination, ESG, and more. Before finalizing our architecture, I’m weighing two approaches for task management: Option 1: Appian’s Built-In Human Tasks via Process Models Uses process reports and task assignment rules Tasks are tied to process instances UI and SLA logic driven by Appian’s native task engine Option 2: Custom Task List Database We build our own TASK_GROUP and TASK tables Tasks are instantiated based on business rules and metadata UI, counters, and SLA logic are fully controlled via record types and expressions My Questions: If we rely on Appian’s built-in human tasks, what happens if the process instance is deleted or archived? – Can we still access task metadata (status, assignee, timestamps) via process reports or APIs? What are the trade-offs between us
Hi Everyone, I am getting below error could you please let me know if you have any idea on this error error converting typed value TypedValue[it=1134,v={4cef5fb4-6aa9-499c-99e1-34fbb0d20616@6291,{TypedValue[it=5246,v={335,C-2025-0335,,,Efficacy and safety of liposomal amphotericin B(AmBisome® ) versus Isavuconazole in patients with invasive Aspergillosis in liver transplant recipients ,,,CRDRF,DRF,<null>,,jiaqi wei,2025-09-13,<null>,110000.0,0,,0,,<null>,1,15144486065@163.com,2025-09-13 01:56:30.0,<null>,15144486065@163.com,2025-09-13 02:28:22.48,,1,Shawn.xiao,,0,}]}}] to XML in order to convert it to java type com.appiancorp.common.EntityData
We have created an Expression Rule named abc, where data is fetched from a Record Type with Smart Search enabled. The results are sorted in descending order of similarity score. Smart Search is enabled on the Full Name and Address fields. For example, the address field contains values like "St.", and we expect that when a user searches for "Street", addresses containing "St." should receive the highest similarity scores. However, we are observing unexpected behavior. For instance, the address "1817 W Broadway Columbia MO 65218" sometimes receives a higher similarity score than addresses that explicitly contain "St.". Additionally, we would like to understand how Smart Search handles nickname matching—for example, whether a search for "Leo" would return results like "Leonardo" with a high similarity score. Request: Could you please help us understand how similarity scores are calculated in Smart Search? Is t
According to [mention:650c85e52fdf47f29168a7d381b7feb7:6b577b8c04704e209d29b6772bf67243:label=Leverage%20JMeter%20in%20Appian%20Load%20Testing%2C] this plug-in [mention:a056532754bb4d848e4bc838433a0ebd:f7d226abd59f475c9d224a79e3f0ec07] is needed for, or at least greatly streamlines, performance testing in Appian. The app is now unavailable, and a comment on the plug-in page notes that it is out of date. Is this plug-in permanently out of support, and consequently, is that a showstopper for using JMeter in Appian Load Testing? What is the latest guidance?
Q. There are 2 record types, ABC and XYZ, which sync enabled. The XYZ record type is added as a relationship into the ABC record type. A user has Viewer permission to the ABC record type but does not have access to the XYZ record type. A site page is represented to the user where the data is sourced from the ABC record type and its related record type the XYZ reference. What information does the user see on the site page? Page is presented to the user and the data reference to the XYZ record type appear as “null” Page is presented to the user with the XYZ record type data and field references redacted. Page does not load, and an error message is presented: “The record type [identifier=XYZ] does not exist, has been deleted, or you do not have sufficient privileges to access the data.”
Hi Community, In our current implementation, we're using the Send E-Mail smart service in a few process models. However, the Appian Health Check report flagged this with the following message: "Send E-Mails references a smart service that is no longer recommended for use (Send E-Mail). Please remap this node in the process model to use the latest version." Could someone guide us on: What the recommended replacement is for the deprecated Send E-Mail smart service? Any best practices or migration steps we should follow while updating our process models? Thanks.
Initially, I considered using deployment packages to track changes. However, I noticed that once changes are pushed from UAT to Production, the environments become synchronized. As a result, all objects appeared in the deployment package; however, the ones that were initially modified before being pushed to Production are no longer listed as 'modified.' This makes it difficult to track the specific changes made during that deployment.I'm looking for a reliable approach to maintain visibility into code changes with each deployment. Has anyone found a good solution or best practice for this scenario?
Can someone please explain what are major pros and cons of process driven and db driven task and in which use case we should consider db driven and process driven approach.
Hi everyone, We're building a bi-directional integration between Appian (BPM) and an external multi channels systems CRM, Mobile, Kiosk, Corebank etc. We have two architectural approaches and are looking for insights or best practices from the community: Approach 1: Task-ID Driven • CRM receives a generated Appian task ID via API • CRM later calls a second Appian API to complete that specific task by its ID Approach 2: Event-Driven Integration with Correlation ID (Using Appian Events) A shared correlationId (UUID) is generated and passed between CRM and BPM. Appian subprocesses register to Receive Message Events or wait via correlation-aware logic. CRM communicates by sending events (e.g., KYC_COMPLETED, DOCS_SUBMITTED) using a unified API. Appian routes events internally using correlationId + eventType. What I'm Looking For: Is there an Appian-recommended best practice for choosing between task-based vs event-driven integrations? Are Receive Message Events and cor
Hi everyone, We’re currently in the design phase of a large-scale Appian BPM implementation for a bank. Appian acts as the backend processor for multiple business domains — including Loan Origination, KYC, and more — with all front-end channels (like CRM) integrating via Kafka events. To give context, here’s a simplified version of the incoming JSON payload from CRM to our Appian BPM: Our Design Question We’re wondering whether our database design should mirror this JSON structure, or whether we should use a normalized model that separates document references into a central table. To scope the question further: We’re using a DMS (Document Management System), and every attachment UUID points to a file stored there. Documents can belong to any entity (Applicant, Collateral, Product Info, etc.), and multiple documents can be associated with each entity. Processes vary, and different document types may be required at various stages (requested from the C
Hi everyone, We’re building a large BPM platform in Appian for a bank. It handles multiple core processes like Loan Origination, KYC, and other services. We’re also integrating with both CRM and a Document Management System (DMS) — so document handling is a key topic for us. Our Setup CRM sends us structured application data via Kafka events. We use a central table called BPM_PROCESS_MASTER to track each case (with caseId, correlationId, processKey, etc.). We built a shared table BPM_DOCUMENT_LOG to store documents with fields like: processId entityType entityRefId documentType AppianDocId (if it’s stored in Appian) DMS_UUID (if it’s stored in our DMS) This setup gives us flexibility: We can store documents at any level (applicant, guarantor, collateral, etc.) We can handle new document uploads mid-process (like if Credit asks CRM to re-send more docs) It keeps our business data clean and avoids spreading document fields everyw
Hi there, As a result of a process, a CSV file is output, and I want to store that file in AWS S3. Also, when needed, I want to be able to copy the file in S3 to the Appian Knowledge Center by pressing a button. I want to achieve this by connecting via AWS Private Link, not via the internet. To achieve this, is there any way other than using Lambda, etc.? There is an Amazon S3 Utilities plugin, but it seems to connect via the internet, so I don't think it meets the requirements. Thanks
Please observe the result of these forEach, (1. and 2.): 1. a!forEach( items: {1,2,3,4,5}, expression: if ( fv!item > 3, fv!item, {} ) ) results in meanwhile 2. a!forEach( items: {1,2,3,4,5}, expression: if ( fv!item > 3, fv!item, null ) ) results in Question: Why forEach 1. does not outcome five members in the list?, I expected this result List of Variant - 0 items List of Variant - 0 items List of Variant - 0 items 4(Number (Integer)) 5(Number (Integer))
Difference in Write to Multiple Data Store entity and Write to Data Store entity? When we need to use the multiple data store entity?
Hi All, we have encountered the delay in the execution of the process node (write Records) in the process model. The estimated time taken for the execution is over 2000ms, can anyone suggest, how to reduce the node Execution time and we have Expression rule in the node input of the smart Service . Thanks in advance!! regards, Manoj Yadav.
Hello, My app has a series of reference data stored in a separate table/RT. We've permitted the user to manage that data as the values (slowly) change over time. Part of that management is to disable selections for future use by making them inactive (isActive = False). Dropdowns are used to access the reference data for creation and editing records. Only the active values are made available in the choiceValues/Labels to prevent use of outdated information. The problem is in dealing with "historical" data. There are active records created the week previous that include a reference value that was made inactive=True this week. Now anytime these types of records get edited, the reference to the retired data causes an error because selected value is not on the current list of choiceValues. I could lift the isActive = true filter on edit vs. create new record, but some of the reference values are years old and not appropriate f
a!localVariables( local!data:ri!asr_Requests, local!rawEmails: ri!asr_Requests.emailAddresses, local!integrationResult, local!isintegrationSuccess, local!individualEmails: reject( a!isNullOrEmpty(_), a!forEach( items: split(local!rawEmails, char(10)), expression: trim(fv!item) ) ), local!invalidEmails: reject( a!isNullOrEmpty(_), a!forEach( items: local!individualEmails, expression: if( regexmatch( pattern: "^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$", searchString: fv!item, regexFlags: "si" ), null, fv!item ) ) ), /*local!formattedEmailString: joinarray(local!individualEmails, ","),*/ local!formattedEmailString: a!toJson( { emails: joinarray(local!individualEmails, ",") } ), local!validationMessage: if( a!isNotNullOrEmpty(local!invalidEmails), "Emails must be valid and each on a new line.", {} ), a!formLayout(
Hello, I’m working on a bidirectional integration between Appian and an external system via a middleware gateway. In this setup, we often encounter two categories of errors: Technical issues Data issues Errors series (500 and 400) [emoticon:71aee13fb1eb4feea8d56f3f0189f580]My question: What are the best practices for functionally handling these types of errors on the Appian side? Specifically: Should we simply display messages to end users via pop-ups or alert banners? Are there recommended design patterns or built-in Appian features we should consider (such as retry logic, logging strategies, fallback mechanisms, or dynamic UI error messages)? Any advice for differentiating user-facing errors from those logged for admin troubleshooting? Thanks in advance for your insights!
Good day, fellow Appian developers, I have a question about best practices regarding managing document uploads conditionally. Scenario: I have about 11 user tasks in a new application. Each task has different business logic regarding what documents can be uploaded and how. For example: On the first task, only documentType1 and documentType2 can be uploaded. documentType1 can be uploaded only once and must have a .docx extension. documentType2 can be uploaded multiple times, with no restriction on file extension. Business rules will vary from task to task. Additionally, this setup is currently only applicable for country1/organization1. Over time, this process will be adapted for seven organizations/countries. Each organization will have different business rules about what documents are required and how they can be uploaded in each task. Since this involves quite a number of validations, what is the best practice for creating a generic document upload component that can work ac
Is there anyway I can use github copilot to analysis my application.
Hi everyone, just wanted everyone's opinion on one of our process. We have multiple categories for which we have different set of user roles. They are stored in DB like category 1 -> category 1 roles with their users. And the count of rows is roughly 4000 in production. Role are 1 till Role 11. Categories are like 100+ and there can be multiple users for a role. Also, we have few user groups for few of our oversight roles so whenever there is change we add or remove users from group. So the thing is for Role 1 - Role 6 we are checking throughout application by querying the record with a batch size of 1 and with a single field, if it returns we believe the user has that set of access and we show the screen accordingly. For the rest we use if they are part of user groups and show the content accordingly.My question is what would be a better approach for this? To have groups for all roles and then whenever there is a change add/remove in all user groups? Won't t
Hi, We have the following requirement and would appreciate the community's support to suggest the best practice for achieving the same. Business Requirement : A process for loan is triggered in a branch (CRM system) where all the customer and loan related details are collected and then submitted to another department(Credit department) in the bank. All the UI and process related to branch is implemented in CRM, whereas credit department UI is implemented in Appian(review of submitted application happens in credit department). if any discrepancies are found in the application, credit department can send the application back to branch(CRM) and once corrected flow will continue in Appian. This return to branch/ different roles within the branch can happen multiple times at various points during credit department review Suggestion required on below approaches: Approach 1: In traditional BPM systems, we create a Dummy task in BPM to indicate the external system task(CRM), once this tas
fff
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.