• Varun Sharma 184
  • NEWBIE
  • 0 Points
  • Member since 2020

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 3
    Questions
  • 2
    Replies
Hello Team,
I developed a custom component using APEX to capture some numbers during processing of an operation.

For this to be secure we are looking to release it as a managed package and we are looking to know:

1. Is there a general liability / obligation we have on listing the package on App Exchanges?  If we release / list a package as an App Exchange package, is there a liability / obligation from us to provide a support for it (as it may not work for all customer and someone who installs may ask for a fix or new feature). Also does this liability / obligation level changes if this is a free package or paid package.

2. From the documentation, it seems we can control on who can install / use the package either by user / org. I just want to confirm if we can do it on appexchange by creating a sample package on how it all works or we need to follow full procedure to know how it all will work practically?

We are looking to move from unmanaged packaged to managed package and need help to make the right decision
I am looking on how the rules will be configured with the example of Zip code as shared for defining Work Rule

https://help.salesforce.com/articleView?id=pfs_optimization_theory_work_rules_extended_match.htm&type=5

Please help with same.
*I need to get all assignements for SA from a Sepcific Territories for specified period* i.e. Get all the AssignedResources for SAs which have an ES between today and next 5 days and below to area A, B, C

Please help as this query is telling not more than x levels are allowed in query. 

select ID, ServiceAppointment.AppointmentNumber, ServiceAppointment.ServiceTerritoryID, ServiceResource.Name from AssignedResource 
where ServiceAppointmentID in (
ServiceAppointment.EarliestStartTime > 2019-06-01T00:00:00Z and ServiceAppointment.EarliestStartTime < 2021-06-29T00:00:00Z
and ServiceAppointment.ServiceTerritoryID in (Select ID from ServiceTerritory where ServiceTerritory.Name in ('Delhi','Haryana','Punjab','North','India'))
*I need to get all assignements for SA from a Sepcific Territories for specified period* i.e. Get all the AssignedResources for SAs which have an ES between today and next 5 days and below to area A, B, C

Please help as this query is telling not more than x levels are allowed in query. 

select ID, ServiceAppointment.AppointmentNumber, ServiceAppointment.ServiceTerritoryID, ServiceResource.Name from AssignedResource 
where ServiceAppointmentID in (
ServiceAppointment.EarliestStartTime > 2019-06-01T00:00:00Z and ServiceAppointment.EarliestStartTime < 2021-06-29T00:00:00Z
and ServiceAppointment.ServiceTerritoryID in (Select ID from ServiceTerritory where ServiceTerritory.Name in ('Delhi','Haryana','Punjab','North','India'))
I am getting ready to launch a product and I am scratching my head on this one as to how I would go about packaging (managed versus unmanaged) it for my clients.

Here is my understanding of Managed versus unManaged package:

Managed:


1. Clients don't see my code - my IP is protected
2. Once I publish the managed package as released, my engineering won't be able to modify a lot of things - such  objects and object attributes in the developer environment. This is clearly undesirable for a startup.
3. Once I create a managed package in a developer environment, my object get prefixed with the unique prefix - even if i delete the managed package, objects retain their prefix.
4. Clients can upgrade without uninstall...
5. Managed beta package is an not an option, since it can't be done in production environment - only sandbox or developer. I am looking for real production customers who will pay me, but appreciate the fact that product might change based on their feedback.

UnManaged:

1. Code is visible to my clients - my IP is unprotected
2. I can freely modify my product in developer environment, downside being that customers have to uninstall the prior release and manually reimport all the data.

Ideally I want a managed package (to protech my IP and enable  upgrades). However, I  find the prospect of my engineering  not being able to modify the  objects for eternity a  little scary. I understand this is important so that clients can upgrade, but since my product will evolve, I don't want to be locked in early on. Early clients might be willing to uninstall and reimport, if they see newer functionality is worth it.

One option I was thinking was to always maintain an unpackaged version as my golden source code. I can then use this to create multiple managed packages, each in a different developer enviroment, each with a different prefix. So let's say I create release 1 with a prefix "mycom1". My first client installs this - the objects are called mycom1__abc etc...If my client finds bugs, I fix them in the mycom1 and also in my golden source (yucks!). Let's say that I find that I do have to modify my objects. I go back to my golden source and and create a new managed package with prefix  "mycom2". I can give this to customer 2....Now I have to fix bugs in three places(really yucks!!!)

Does anyone have any better ideas or is my understanding flawed (I hope so).

I wish I could put beta managed packages in a production environment - I will have best of both worlds in that case!!!