What are your "top 10" developer how to questions?

I am restarting my developer newsletter, blog. What would you like to know how to do? Once, I have some content, I'll post how to subscribe.

  • I would like to have a way to prioritize the processing of inbound email.

    I have about 20 different inbound-email records, each linked to a separate mailbox.

    The scheduler always restarts in the same order, by ID of all things, and some really low-priority high-traffic queues happen to have an ID that puts them at the top of the list.

    Sometimes this causes the scheduler to loop through the top 5 out of 20 (especially when bots start spamming us) restarting at the top every time again and again and not getting to the others in a timely fashion, which is not good for urgent cases (SLAs come into play) whose inbound email happened to get an ID that puts them at the bottom of the list. 

    My only solution right now is to make those low-priority lists inactive for the day, and then active at night... all manual work.

    Should we be using email the way we do? Probably not. But even ignoring the poor business-model, it would be nice to be able to set priorities or have the scheduler continue from where it left off and not restart from the top.

    Thanks!

    FrancescaS

    P.S. you asked for it ;) 

  • Can you explain your use case for emails? We use Riva; have you looked into this or Sugar Connect?

  • Hi  ,

    here are some topics that are intersting for me 

    • how to extend Sugar BPM with a custom Action with custom parameters (for instance, call an external REST API with specific parameters)
    • what is the best way to alert the user that something went wrong after a hook execution (for instance, an aftersave hook that failed because the external system canno't be reach ; the best way would be a popup...)
    • how to manage B2C/B2C customer with Sugar
    • how to manage files with Sugar Cloud instance (for instance a custom action to upload specific files that must be read to create / update some records)

    Many thanks,

    Fred

  • great questions. I will do my best to address them. My thoughts

    • Adding custom actions to SugarBPM can be done, I can provide some examples
    • I would use notifications, instead of an alert. Notifications are the number icon at the top of the screen
    • Can you expand on what you would like to know about managing B2C other than turning off the requirement of Accounts in certain modules? There is a config parameter to turn off the requirement of accounts.
    • Can you please provide more details on your use case?
  • Hi ,

    • Notifications are OK but not the more "visual" to push information to the end user ; we are looking for browser notification or  web socket like feature in order to push better information / alert to the user, even for server action
    • About B2C / B2B management : we have several customer that use the CRM for B2C / B2B management. So, it means that I could have a contact : Frédéric Rinaldi whom is involved in a commercial relationship for himself (as a B2C) or for his company (as a B2B) and sometimes both.
      • in Sugar, the Account module is central and in my opinion, we should keep an Account Frédéric Rinaldi for B2C management but also a contact (for outlook plugin or marketing automation synchronisation for instance)
      • because of the many-to-many handles like a one-to-many contacts-accounts relationship, it's complicated to imagine having a single contact link to his pro account (B2B relationship) and personnal account (B2C relationship). But, for my customer it's important because we are talking about the same contact and we should be aware about how this guy is involved with us
      • Cases or Opportunities / RLI / Purchases etc. are expecting an account ; the same for core reports / dashlets (sale funnel for instance) / forecast
      • the core B2C option is just going to set optional the account, but it's not going for us to provide a good user experience about how to handle B2C / B2B Sales process, Support process (portal access / visibility for the cases) etc.
    • SugarCloud and file management ; my case is the following
      • my customer got, every weak, several files provided from external systems (ERP etc.)
      • those files are XML or CSV
      • we need to upload all the files at the same time
      • according to the file "type", we need to read the content in a specific way and then run the corresponding action (create or update existing records)
      • then we would like to archived the files in a proper way

    I hope this help to understand my expectations. 

    Fred

  • This is probably an unusual scenario - so just keep it at the end of your list ;) I am sure there are much more useful things to address in your blog that would have a wider audience. 


    --- but here is the scenario:


    We have:

    info@ourdomain.com, which create cases assigned to CS USA team,

    info-europe@ourdomain.com which get assigned to our CS Europe Team

    tech_support@ourdomain.com, for cases to our TS Team...

    but also some internal email addresses that people bcc or forward to in order to log things against Sugar records that do not create cases, like interactions@ourdomain.com 

    (add a dozen more addresses to these examples and you have my setups).

    All these are actual inbound_email records that map to mailboxes on our mail-server that Sugar reads.

    When the Check Inbound Email scheduler runs it reads the mailboxes in order of ID:
    001 interactions@

    002 info-europe@

    003 info@

    004 tech_support@

    interactions@... is the first being read by ID.

    The scheduler reads that first and may take more than a minute or two to get through all the emails
    (the emails are being processed to make sure that forwards are being logged with the correct to/from so that if I send a forward in interactions@ that is a message that was from you to me, it's logged that way and not as from me to interactions@ and parse for details to classify the messages and more) 

    So scheduler starts, reads 001 - interactions, does not get through all the emails

    Next run starts, reads 001 - interactions again and continues... may no get through all the emails

    ...emails keep coming in to 001... scheduler starts from 001 every time and never gets to that urgent tech support 004 message that sits there for 20mins waiting to be read.

    I have to set 001 to inactive so the scheduler gets to read what's been waiting in 002, 003, 004 and when things calm down (usually at night) I have to put 001 to active again so it can be processed.

    But I have to keep an eye on the size of the inboxes in the mail server to know when to pause processing of 001.

    In that example I want to prioritize 004-tech_support over 001-interactions without having to manipulate the ID of the inbound_email record to put it first in the list.

    Does that example help?

    Adding more products is not an option for us at this time.
    Are there better ways of doing things, such as using a Case portal instead of email, sure. But that has not been an option on Pro and I have not had the bandwidth to create my own portal - yet.


    Thanks,
    Francesca

  • ,

    we have customizations which were made by a partner back when we first started Sugar in v6.0 (12 years ago) to allow for the M-M Account-Contact relationships and I've had several headaches related to the issues you mention.

    We have had to not use some features like sales funnels and forecasts because of it, not to mention problems dealing with duplicates when people don't realize that person A is both at Account A (B2B) with their business email address and Account B (B2C) with their personal email address but are really the same person.
    It also complicates record assignments and teams since SalesPerson1 deals in B2B and Sales Person 2 Deals in B2C and both are talking to the same customer...

    I would say be very careful when modifying things like Account, Contacts and Addresses (back in 2010 we also added an Address Module to allow more than 2 addresses on an Account and to relate those addresses to different Contacts @ the account, like departments at a University)....
    and that prevented us from using things like out of the box third party extensions for google maps and proximity reporting.

  • Rather than resorting to modifying the id of the inbox record have you looked at creating a custom version of the "pollMonitoredInboxes" function to use? The query that collects the inbox records to check currently does so without any ORDER BY. I would be investigating adding a new field to the InboundEmail module called Priority which is numeric and setting these to put the inboxes in priority order for reading. Then simply adding the relevant ORDER BY to the query that collects them in my custom function.

    This might be overly simplistic for your issue and it is slightly upgrade unsafe in that you need to manually adjust for future "enhancements" to the function but might be worth looking at if you haven't already. It has the benefit that you can easily adjust the priorities of your list of inboxes in the UI as well (good luck in remembering how to adjust the Smarty templates that the bwc modules still use here!!!).

    If you have looked at it already and ruled it out then I'd be interested to know as the above is just my ramblings on first thinking about your issue. I have not tried anything to see what would happen :)

    Thanks,

    JH.

  • Hi ,

    we also went through the same issues. This is why I was curious about how other Sugar Users / Partners handle this case.

    I also definitely agree that some of the core module (Contacts, Accounts and addresses fields) are really risky to customize...

  • Great idea!

    I'd love a tutorial on making a custom listview dashlet.

    I can easily add a listview dashlet for any single module (e.g. Accounts) to the home page, but I'd like to be able to make a custom listview dashlet that lists records from multiple modules in a single list (e.g. Tasks, Meetings, Calls, Emails). The list should look and behave just like the out-of-box listview dashlets do with pagination, filtering, sorting etc.

    Is there a simple way of leveraging the existing listview dashlets for something like this? The potential solutions I've seen so far are to create custom module with custom API endpoints that actually return data from multiple modules or to replicate much of the out-of-box listview dashlet functionality in a custom dashlet.

    Thanks!

    Miska