function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Ellen HEllen H 

Process Builder won't Run my Flow - I'm stumped.

I'm developing a Class Registration App for my school. I've started by trying to adapt standard objects before creating custom objects. I want to use the standard Product Object to store Class information and made a custom Registration object to store the students who have signed up for each class. I'm trying to create a rollup summary field on Product (relabled Class) from the custom Registration object.

Since I couldn't create a master detail relationship between the two, I went looking for another way count what what we call "Seats Taken". I ran across a video and some documentation on doing this using Process Builder and Flow Designer. I worked through those modules on Trailhead and decided to give it a shot.

I Created a Flow:
User-added image
And a built a process:
whole process
 Then updated my Profile with permissions to Manage and Run Flows  - updated a record.... and got this error message. 
error message
I made sure I activated the right version of the Flow:
flow page
But it's still not working. I tried logging out closing, my browser, everything short of rebooting the computer. I'm stumped. Help!
 
SwarnaSankhaSinghSwarnaSankhaSingh
Hi Ellen H,

I was going through your question and although at this point I cannot be of much help on the problem you are facing with the flow, I did want to understand your rationale behind using the standard Product entity for your Class Registration App.

I understand your willingness to reuse standard objects but it is equally important to understand what is the purpose of having these standard objects and if that purpose fits well into the custom solution we try to build. The OOTB relationship the Product table has with Opportunity and Quote tables serves a very specific purpose.

Lets take an example where you would like the Registration application you are building to be used by students who have a confirmed admission to pay their Tuition fees. And when they pay their tuition fees for their semester, they have a list of subjects to choose from for their specific class and based on the subjects they choose, the Tuition fees is calculated. For this kind of a requirement, one can think of using the Pricebook as your classes, Products as the subjects available for the classes and an Opportunity as a Tuition fee transaction. In this kind of a setup, you will see that the requirement easily ties to the specific purposes that a few of the OOTB Standard objects offer and it makes total sense to use them.

In your case, however, I do not think that your process of capturing Student Registrations in on the same lines. My guess is that you want an application that can capture and track which student is registered for which class for the said year. In my humble opinion, the best approach would be to do the following which would be a far better utilization of the OOTB features.:
  1. Create a custom object named Class for defining the classes in the school.
  2. Reuse the Registration object you have created for capturing a Student Registration and ensure that it has a relationship to the Class object as well as another relationship to the standard Contact/PersonAccount object (which should be reused for capturing Student information).
When we decide to use a standard object, we need to understand very clearly on what is the primary purpose of the object and it's associated features because it is critical to any setup that it is aligned on the process it tries to achive. Using Opprotunities and Products could be very useful if we try to capture Investment transactions for an Investment firm or Tuition fees for a School or Donations of an NGO because the underlying objective and purpose is the same with the only difference being nomenclature.

This was my two cents; I hope it gives you a better perspective.

Kind Regards,
Swarna.
Ellen HEllen H
Hi Swarna!

Thank you for your reply - I appreciate your perspective as I've been thinking through the same questions. Let me explain our business model. We are a non profit community art school. Our students are roughly half adults and half children. We have four sessions in a year and 10 departments. Students may sign up for any class in any department, as we are not offering credit or degrees. They are not committed to a program of study and come and go as they please.

When I tested Products and Price Books there were elements that fit very well with the way we already do business.We offer a core of the same classes each session with only a few variations. So storing those classes in the product object, gives us the abilty to clone our repeated classes for the next session and only change the dates. I've set up price book to correspond to a Session/Year and Member Levels. For instance - the Fall 2016 Member Early price book contains the classes offered in that session for people who are members and register before the early deadline. The opportunity has a record-type named Class registration for the transactions. So, our model is similar to your example.

The obtacle I ran into is that our department heads need to be able to see the number of students currently enrolled in a class at any time. They are accustomed to seeing that information in the context of the class information, in this case - the product. Thus, the need for a rollup summary field. So I created the Registration object first to give me something to roll the numbers up from. Then It became clear it could be useful in other ways. If, for intance a parent logs in or calls to register their childen for a class - the registration tells us who in the household (Account - we use the NPSP) will attend the class. And creates a separate registration record for each child. We also need the seats taken calculation to let us know if a class will be cancelled. We have a minimum number of students to have a class "make". As well, it lets us know if a class is full. with registrations I can have a "waitlist" check box to let us know if a student who tried to register once the class was full wants to be wait-listed. Conversely, if a student withdraws from the class, the seats taken count will update.

That said, given the limitations I've run into using the Product object, I have started to consider whether I should consider a custom solution. But I doubt I could build something with the functionality of the standard Product and Price Book objects - at least it would take a while. I feel I'm very close to having a functional beta model - If I can just get a count of seats taken!

Thanks again - I appreciate your thoughts. I'm new to developing so I need all the perspective I can get.

Ellen
SwarnaSankhaSinghSwarnaSankhaSingh
Hi Ellen,

Thank you for sharing your perspective; honestly, I had was hoping a similar response. Before I come up with any other suggestions, I would like to know a few details about your org:
  • What is the SFDC Version you are using?
  • Does it allow for custom coding?
  • Do you have a sandbox linked to your Production org?
  • I am sure you are using the Opportinuty model because the features meets your feature requirements only becaue your business model is different because these students who are registering for classes are doing so free of cost correct?
Kind Regards,
Swarna.
Ellen HEllen H
Swarna,

I'm happy you are willing to help me think through this. I've gotten myself into a few thought feedback loops in this development process. Mostly because I was not entirely clear how some of the standard objects interact with each other.

To answer your questions (and ask a couple):
  • I have sandboxes linked to our production org and I'm developing this app in a developer sandbox. We have a full sandbox that I will test in once I have a working model.
  • We are using the Opportunity Model. We charge for classes, but also accept donations and grants. We started using Salesforce initially for tracking our donors. I feel having donor and student info in separate systems limits our relationship with our constituents, so I proposed using salesforce for that as well. I want to keep using the Opportunity because the NPSP has a Payments Object attached to Opportunity that helps us with our audit process. 
  • If I've looked in the right place our SFDC version is 37.0. The edition is Enterprise
  • I don't know if it allows for custom coding. Where would I find that?
  • Also, what does OOTB stand for?
  • At the moment our Salesforce instance is not connected to our website. But It will have to in order to replace our current student application. Some of what I've read indicates that Orders is the object that is used to collect information from customers - is that correct?
Thank you,
Ellen
SwarnaSankhaSinghSwarnaSankhaSingh
Hi Ellen.

No worries; one can only grow by sharing information and experience. It is good to know that you are using the Enterprise Edition with sandboxes linked to it. And the fact you use an EE, will give you the ability to build custom coded interfaces using Apex. OOTB stands for "Out of the Box" which implies standard features.

As far as capturing Student applications are concerned, there are a multitude of wayz you can do it and not just Orders. But I guess this is something in the future so lets leave this aside for the moment.

Question:
  • When you say you charge for classes, are you saying you charge the Students? If yes then do they pay it at the time of registering for a Class?
  • When you talk about Donations and Grants, they would be tracked separately than the student fees (using another term instead of charges) - correct?
  • Continuing on donations - you did mention that you track them in SFDC but how are they linked to Student Registrations or Students or Classes unless you allocate a certain percentage of a Donor's donation to a class and maintain that relationship to let the donor know on how his contribution is being used?
  • What is NPSP?
  • Since you have this enabled in your Dev Org, would you be comfortable in setting up an ID for me in your Dev Org to take a look around the objects and some records you may create for me to view to understand your business flow end to end? This would actually be of great help. If you do then my email ID is golden.dev.coder@gmail.com and you may set the username as golden,dev.coder@ssvadev.com.
Kind Regards,
Swarna.
Ellen HEllen H
Hi Swarna

The NPSP stands for the Non Profit Starter Pack. (Although I think they have recently started calling it the Non Profit Success Pack.) It is a managed package from Salesforce.org  - the arm of Salesforce that makes 10 free enterprise licenses available to qualified non-profits. The package adds features and customizations most non profits orgs need such as adapting the Account to operate either as a company or a household.

The NPSP includes a feature called User Defined Rollups which lets you roll up Opportunities into buckets and so track donation income separately from memberships and class registrations. So all transactions flow through the Opportunity, delineated by Opportunity record types.

Yes, we charge students for classes and they pay for the class at the time of registration. There are instances where people pay over time, but that is the exception. So, I set up Product revenue scheduling with the quantity scheduling option - because students pay up front and we "deliver" classes over several days or weeks. 

A Contact can have a variety of relationships to our school - they may be a donor, a student, an employee of a Foundation that we recieve funding from, or any combination of the three. We don't allocate donations to particular classes as you describe above. A donor may give to an appeal for general operating funds, or to our general scholarship fund, or to a particular department, and that is generally tracked on the opportunity (One opportunity to a record type) by a look up from the opportunity to the Campaign.

I'll be happy to set up a login in for you - thanks for offering!

On another note - when I was working on the Process and Flow yesterday I never looked at my email. This morning I saw that I had a series of emails generated by the Flow errors - they seem to detail the point... or points, where things went wrong. I'm going to take a look at those emails and see if I can sort it out.

Kind regards as well,

Ellen
SwarnaSankhaSinghSwarnaSankhaSingh
Hi Ellen,

Sorry for the late response; I have been extremely busy with some post launch issues this week. I will take a look at the Org as well as get back to your queries over the weekend.

Kind Regards,
Swarna.
Ellen HEllen H
Hi Swarna,

No worries - I'm still trying to get a handle on my flow. 

Thanks,
Ellen